精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

pipeline高端玩法—優先級介紹

Spinal FPGA ? 來源:Spinal FPGA ? 2023-11-04 10:13 ? 次閱讀

在前面的系列文章中,已基本闡述了Pipeline中的用法,本篇做個總結,重點針各方法的優先級

》last Win

無論是SystemVerilog還是SpinalHDL,都有Last valid assignment wins的語法特征。如在SpinalHDL-Doc中所描述:

// Every clock cycle evaluation starts here
val paramIsFalse = false
val x, y = Bool() // Define two combinational signals
val result = UInt(8bits) // Define a combinational signal

result := 1
when(x) {
result := 2
when(y) {
result := 3
}
}
if(paramIsFalse) { // This assignment should win as it is last, but it was never elaborated
result := 4// into hardware due to the use of if() and it evaluating to false at the time
}

對應的真值表是:

4ff96b58-7ab5-11ee-939d-92fbcf53809c.jpg

那么在使用pipeline中,你可能會這么來寫:

when(cond1){
haltIt()
}
when(cond2){
spawnIt()
}

參照上面所述的Lastvalid assignment wins的語法特征,你可能認為spawnIt的優先級是高于haltIt的~

然而,并非如此。

Pipeline的構建并不是我們在直接構建,而是我們描述了流水線的規則之后交由Pipeline的build函數來搭建起整個的流水線結構。既然不是我們直接搭建電路,那么就要注意下在流水線構建過程中這些方法的優先級了。

回到Pipeline的組成結構:

500919ea-7ab5-11ee-939d-92fbcf53809c.jpg

Pipeline包含Stage和Connection兩大主體。在Pipeline的build構建中,分別對應了Internal Connection及InInterconnect Connection兩部分。

》Internal Connection中的優先級

來看下在Pipeline中關于Internal Connection的處理:

5012aabe-7ab5-11ee-939d-92fbcf53809c.png

在之前的文章系列中已基本分析了每個小單元的用法(forks暫時不考慮)。對于每一級Stage,默認情況下Stage的output端口和input端口是直連的。而后自上到下對應的API處理分別是:

spawnIt

flushIt(root為true)

throwIt(root為true)

haltIt

按照Last valid assignment wins的原則,那么上面對應的API則是優先級從高到低的。

》Interconnect Connection中的優先級

這里還是以Pipeline中常用的M2S為例來看待Interconnect Connection中的處理方式:

5029edb4-7ab5-11ee-939d-92fbcf53809c.png

這里我們要區分來看:

m.ready存在(對應前一級Stage的output.ready)

m.ready不存在

先來看m.ready不存在的場景。當m.ready不存在時,上面的處理流程牽涉到的API有:

flushIt(line30)

flushNext(line31)

按照Last valid assignment wins的原則,那么上面對應的API則是優先級從高到低的。

而當m.ready存在時,則牽涉到的API有:

throwIt(line19)

flushIt(line 30)

flushNext(line 31)

按照Last valid assignment wins的原則,那么上面對應的API則是優先級從高到低的。

》寫在最后

對于SpinalHDL Pipeline這個“勇者的游戲”系列,至此基本總結的差不多了。寫文章相比于看代碼還是要費事一些。對于Pipeline這個系列,最開始驅使我去研究來源于想對Cache的了解,看著dolu的代碼如看天書。不得不說Pipeline的這個設計簡直“驚為天人”!對于邏輯設計來講無非兩大核心:狀態機,流水線。在看Pipeline之前覺得這個Lib真抽象,真正看完分析后覺得真香,之前自己的設計簡直太Low了,這里簡直把高效描述電路發揮到了極致~








審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Verilog
    +關注

    關注

    28

    文章

    1343

    瀏覽量

    109986
  • Cache
    +關注

    關注

    0

    文章

    129

    瀏覽量

    28300
  • 狀態機
    +關注

    關注

    2

    文章

    492

    瀏覽量

    27478
  • Pipeline
    +關注

    關注

    0

    文章

    28

    瀏覽量

    9345
  • HDL語言
    +關注

    關注

    0

    文章

    46

    瀏覽量

    8910

原文標題:pipeline高端玩法(十二)—優先級

文章出處:【微信號:Spinal FPGA,微信公眾號:Spinal FPGA】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    基于優先級搶占系統的QNX調度算法

    調度算法,是基于優先級的。QNX的線程優先級,是一個0-255的數字,數字越大優先級越高。所以,優先級0是內核中的idle線程。同時,優先級
    發表于 10-31 09:17 ?709次閱讀

    RTOS應用中的優先級反轉問題

    在嵌入式系統中,如果使用基于優先級調度算法的RTOS,系統中可能發生優先級反轉現象。優先級反轉用來描述系統中高優先級任務由于等待低優先級任務
    發表于 12-14 11:00 ?1177次閱讀

    stm32的中斷優先級基本原理介紹

    stm32的中斷具有不同的優先級,可以使用NVIC(嵌套向量中斷控制器,Nested Vectored Interrupt Controller)來控制。 一、基本原理介紹 stm32的中斷優先級
    發表于 08-13 08:46

    路由優先級

    路由優先級 前面講過,各個路由協議都有自己的標準來衡量路由的好壞(
    發表于 06-09 23:47 ?2942次閱讀
    路由<b class='flag-5'>優先級</b>

    STM32F10X的中斷優先級

    STM32(Cortex-M3)中有兩個優先級的概念搶占式優先級和響應優先級,有人把響應優先級稱作亞優先級或副
    發表于 11-04 15:02 ?41次下載

    stm32定時器優先級

    什么是優先級 優先級是具有高搶占式優先級的中斷可以在具有低搶占式優先級的中斷處理過程中被響應,即中斷嵌套,或者說高搶占式優先級的中斷可以嵌套
    發表于 10-13 11:48 ?5331次閱讀

    DSP中斷如何設置優先級

    原以為2812中斷不能設置優先級。實際上硬件上優先級是做好的。但軟件上有辦法來設置優先級
    發表于 04-08 17:20 ?20次下載

    cortex M內核優先級設置

    Cortex M內核中每個中斷都有一個8位的優先級設置寄存器這個8位的寄存器可以分為搶占優先級和子優先級兩個部分(通過設置優先級組設置)搶占優先級
    發表于 12-01 11:51 ?4次下載
    cortex M內核<b class='flag-5'>優先級</b>設置

    2.FreeRTOS中斷優先級和任務優先級

    FreeRTOS中斷優先級和任務優先級架構:Cortex-M3版本:FreeRTOS V9.0.0前言:最開始,我并沒有搞清楚什么是中斷優先級和任務優先級,但看了部分資料后發現這兩個并
    發表于 12-04 20:21 ?9次下載
    2.FreeRTOS中斷<b class='flag-5'>優先級</b>和任務<b class='flag-5'>優先級</b>

    STM32F103芯片中斷優先級以及FreeRTOS優先級設置

    STM32F103只用了4個位來表達優先級,因此最多支持16的可編程優先級(0~15),15為最低優先級。
    發表于 01-25 18:59 ?1次下載
    STM32F103芯片中斷<b class='flag-5'>優先級</b>以及FreeRTOS<b class='flag-5'>優先級</b>設置

    uC/OS-II學習筆記——優先級反轉與優先級繼承機制

    優先級反轉,是指某同步資源被較低優先級的進程/線程所擁有,較高優先級的進程/線程競爭該同步資源未獲得該資源,而使得較高優先級進程/線程反而推遲被調度執行的現象。
    發表于 02-09 10:33 ?2次下載
    uC/OS-II學習筆記——<b class='flag-5'>優先級</b>反轉與<b class='flag-5'>優先級</b>繼承機制

    中斷優先級處理的原則及配置 搶占優先級和響應優先級的區別

    首先我們需要知道什么是中斷優先級:中斷優先級是CPU響應中斷的先后順序
    的頭像 發表于 05-18 15:10 ?2.7w次閱讀
    中斷<b class='flag-5'>優先級</b>處理的原則及配置 搶占<b class='flag-5'>優先級</b>和響應<b class='flag-5'>優先級</b>的區別

    FreeRTOS任務的優先級示例

    任務的優先級:0~24之間。數字越大,任務優先等級越高。高優先級的任務優先執行。
    的頭像 發表于 09-15 11:13 ?2743次閱讀

    Free RTOS的優先級翻轉

    優先級翻轉簡介:就是高優先級的任務運行起來的效果好像成了低優先級,而低優先級比高優先級先運行;
    的頭像 發表于 02-10 15:31 ?1270次閱讀
    Free RTOS的<b class='flag-5'>優先級</b>翻轉

    什么是優先級反轉

    假設現在有三個任務TaskA(優先級高)、TaskB(優先級中)、TaskC(優先級低),一個信號量(Semaphore),此信號量用于任務之間爭奪某個資源。在某一時刻,高優先級的Ta
    的頭像 發表于 04-24 13:01 ?2223次閱讀
    什么是<b class='flag-5'>優先級</b>反轉