色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

RH850U2A芯片平臺Spinlock的底層實現分析

832065824 ? 來源:汽車電子嵌入式 ? 2023-11-20 09:54 ? 次閱讀

1.RH850U2A上的Splinlock實現

LDL和STC指令可用于獲取原子讀-寫操作,用于多核系統對內存更新進行精確處理。LDL和STC指令的操作方式如下。

1.1 Link

每個CPU只能創建一個Link(LLbit)。該鏈接包含關于創建它的地址的信息,并根據STC指令在該地址是否成功或失敗以及該鏈接是否丟失來進行接下來的控制。該鏈接還包括創建鏈接時的數據大小信息,因此,數據大小與創建鏈接的LDL指令不同的任何STC指令總是會失敗,STC指令失敗則該鏈接被刪除。

1.2 Link generation

每個CPU都能夠生成一個到Local RAM和cluster RAM的鏈接。

在目標RAM上執行LDL指令導致鏈接地址被注冊,同時設置鏈接標志,并響應該指令讀取生成鏈接。

(a)每個CPU的Local RAM

(b)Cluster RAM

每個CPU都能夠生成一個到(a)或(b)的鏈接。

1.3 Success in storing

在生成Link之后,存儲將只響應執行與生成的鏈路對應的STC指令而進行,也就說說該存儲地址只能通過STC指令寫入。

1.4 Failure in storing

如果鏈路丟失,即使處理相應地址的STC指令,存儲也不會繼續。當處理與鏈接不對應的STC指令時,也不會繼續存儲。

個人理解:Link是一個抽象概念,通過LDL指令能夠創建一個link,且每個CPU只能創建一個Link,通過STC指令能改寫CPU Link的RAM的值。

1.5 Condition for successful storing

如果滿足以下條件,則判定STC指令為與該鏈路對應的地址:

生成鏈接的LDL指令的地址和大小與STC指令的地址和大小相匹配。

1.6 Loss of the link

當滿足某些事件或地址條件時,鏈接將丟失。表1顯示了Link loss情況。如果滿足此表中所示的任何條件,則一個鏈接就會丟失。

Table 1 Link Loss Conditions

512ab288-8745-11ee-939d-92fbcf53809c.png

Note: 在Local RAM中,如果執行了除STC/CAXI指令以外的存儲指令,則鏈接并不總是丟失。因此,觸使Link Loss的指令程序流是可以不需要的。例如,在接下來的示例代碼中,在使用LDL指令讀取鎖變量后,只有在沒有鎖的情況下才執行STC指令,如果鎖已經存在(Link已經建立)則通過Lock Release對應的Link Loss程序流就是不需要的。


也就是說,LDL指令Link成功,STC指令存儲成功(創建一個Lock),之后的ST等存儲指令用于Link Loss才是有意義的。也就是只有GetSpinlock成功之后才能ReleaseSpinlock.

1.7 示例代碼

通過使用LDL.W和STC.W指令執行的自旋鎖的示例代碼如下所示。

513f3aaa-8745-11ee-939d-92fbcf53809c.png

一行一行的來分析這段匯編代碼:

MOV lock_adr, r20//lock_adr這個地址值賦值給r20寄存器,lock_adr可以理解為一個存在于RAM的全局變量的地址。

LDL.W [r20], r21//以原子操作的方式加載r20寄存器保存的地址所在的值給r21寄存器。這個指令執行完后,r20存儲lock_adr地址值(全局變量的地址),r21保存了lock_adr地址指向的具體變量值(全局變量的值)。Link Generation.

514d7fde-8745-11ee-939d-92fbcf53809c.png

51642e1e-8745-11ee-939d-92fbcf53809c.png

CMP r0, r21//r0寄存器中值與r21寄存器中的值進行比較。

Note 1: r0是Zero寄存器,其值永遠為0.

5174dd5e-8745-11ee-939d-92fbcf53809c.png

Note 2: CMP指令的結果在程序狀態字寄存器的PSW.Z bit上體現,比較的兩個值如果相等則PSW.Z =1;反之,比較的兩個值不相等,則PSW.Z = 0.

BNZ lock_wait//如果上一次的cmp結果不為0,則跳轉到lock_wait標識符地址處往下執行。

518bc19a-8745-11ee-939d-92fbcf53809c.png

MOV 1, r21//將1賦值給r21寄存器。r21寄存器中保存的值為1.

STC.Wr21, [r20]//將r21寄存器保存的值(1)賦值給r20保存的地址指向的變量。Success in storing.

CMPr0, r21//比較r0(always retains 0)和r21寄存器中保存的值(也就是比較0和1)。

BNZlock_success//如果上一次的cmp結果不為0,則跳轉到lock_success標識符地址處往下執行。

Lock_wait: SNOOZE

Note: SNOOZE指令是一種在自旋鎖期間減少總線帶寬使用的指令。該指令完成后,CPU核心進入臨時停止狀態,以限制后續指令的執行。程序員可以通過將此指令插入到一個自旋鎖循環中,從而避免由于短期重復鎖定過程而導致的不必要的總線帶寬的使用。

51a46970-8745-11ee-939d-92fbcf53809c.png

BR Lock//無條件跳轉到Lock標識符處

Lock_success://一個標識符,運行到這里表明get spinlock成功,繼續往下執行。

ST.Wr0, 0[r21]//王r21寄存器保存的地址值指向的變量寫入0值。Release spinlock.

51ac5f18-8745-11ee-939d-92fbcf53809c.png

51d0529c-8745-11ee-939d-92fbcf53809c.png

2.Spinlock代碼分析

2.1 嘗試獲取Spinlock

51ea6d62-8745-11ee-939d-92fbcf53809c.png

準備獲取Spinlock的時候,外部就是一個While循環,直到成功獲取到Spinlock,否則就會“自旋”。

51f5e340-8745-11ee-939d-92fbcf53809c.png

521121a0-8745-11ee-939d-92fbcf53809c.png

522d4100-8745-11ee-939d-92fbcf53809c.png

2.2 釋放Spinlock

5239a42c-8745-11ee-939d-92fbcf53809c.png

釋放Spinlock對應的C代碼,只需將標識Spinlock的全局變量賦值為0即可(對應ST.W r0, 0[r21]的匯編代碼)。

3.總結

本文詳細分析了Spinlock在RH850U2A芯片平臺上的底層實現,著重需要理解RH850U2A芯片架構中的Link概念。Spinlock對應的底層兩個特殊的匯編指令:LDL.W和STC.W. 在C語言環境下調用GetSpinlock()的具體實現也就是調用OS_LDLW()和STC_STCW()。值得注意的是,Spinlock的底層實現和具體芯片特性相關,其他芯片平臺(比如Tricore芯片)的底層具體實現可能就不一樣了,需要具體分析。

問題:如何理解Spinlok自旋鎖中的”自旋“的含義?

:“自旋”對應底層的SNOOZE指令。當前CPU(Core x)執行LDL.W沒有建立Link后,CPU執行SNOOZE指令暫停一個機器周期,隨后再次嘗試去執行LDL.W指令,直到建立Link成功(其他CPU釋放Spinlock),這個過程對應“自旋”的含義。







審核編輯:劉清

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

    關注

    31

    文章

    5336

    瀏覽量

    120236
  • RAM
    RAM
    +關注

    關注

    8

    文章

    1368

    瀏覽量

    114649
  • STC
    STC
    +關注

    關注

    14

    文章

    299

    瀏覽量

    66205
  • PSW
    PSW
    +關注

    關注

    0

    文章

    9

    瀏覽量

    8237
  • 自旋鎖
    +關注

    關注

    0

    文章

    11

    瀏覽量

    1580

原文標題:RH850U2A芯片平臺Spinlock的底層實現

文章出處:【微信號:汽車電子嵌入式,微信公眾號:汽車電子嵌入式】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    詳細介紹RH850U2A芯片相關的功能

    RH850U2A芯片是瑞薩公司針對電控類域控制器而發布的一塊最新MCU芯片,功能及其強大。
    的頭像 發表于 08-31 10:30 ?7447次閱讀

    RH850/U2A 156pin 用戶手冊:搭載板(Y-RH850-U2A-156PIN-PB-T1-V1)

    RH850/U2A 156pin 用戶手冊:搭載板(Y-RH850-U2A-156PIN-PB-T1-V1)
    發表于 01-09 19:07 ?0次下載
    <b class='flag-5'>RH850</b>/<b class='flag-5'>U2A</b> 156pin 用戶手冊:搭載板(Y-<b class='flag-5'>RH850-U2A</b>-156PIN-PB-T1-V1)

    RH850/U2A 176pin 用戶手冊:Piggyback Board (Y-RH850-U2A-176PIN-PB-T1-V1)

    RH850/U2A 176pin 用戶手冊:Piggyback Board (Y-RH850-U2A-176PIN-PB-T1-V1)
    發表于 01-10 18:52 ?4次下載
    <b class='flag-5'>RH850</b>/<b class='flag-5'>U2A</b> 176pin 用戶手冊:Piggyback Board (Y-<b class='flag-5'>RH850-U2A</b>-176PIN-PB-T1-V1)

    RH850/U2A 292pin 用戶手冊:搭載板(Y-RH850-U2A-292PIN-PB-T1-V2)

    RH850/U2A 292pin 用戶手冊:搭載板(Y-RH850-U2A-292PIN-PB-T1-V2)
    發表于 01-10 19:12 ?3次下載
    <b class='flag-5'>RH850</b>/<b class='flag-5'>U2A</b> 292pin 用戶手冊:搭載板(Y-<b class='flag-5'>RH850-U2A-292PIN-PB-T1-V2</b>)

    RH850/U2A 373pin 用戶手冊:Piggyback Board (Y-RH850-U2A-373PIN-PB-T1-V1)

    RH850/U2A 373pin 用戶手冊:Piggyback Board (Y-RH850-U2A-373PIN-PB-T1-V1)
    發表于 01-10 19:14 ?1次下載
    <b class='flag-5'>RH850</b>/<b class='flag-5'>U2A</b> 373pin 用戶手冊:Piggyback Board (Y-<b class='flag-5'>RH850-U2A</b>-373PIN-PB-T1-V1)

    RH850/U2A 292pin 用戶手冊:搭載板(Y-RH850-U2A-292PIN-PB-T1-V1)

    RH850/U2A 292pin 用戶手冊:搭載板(Y-RH850-U2A-292PIN-PB-T1-V1)
    發表于 02-02 18:54 ?4次下載
    <b class='flag-5'>RH850</b>/<b class='flag-5'>U2A</b> 292pin 用戶手冊:搭載板(Y-<b class='flag-5'>RH850-U2A</b>-292PIN-PB-T1-V1)

    RH850/U2A 516pin 用戶手冊: PiggyBack Board (Y-RH850-U2A-516PIN-PB-T1-V1)

    RH850/U2A 516pin 用戶手冊: PiggyBack Board (Y-RH850-U2A-516PIN-PB-T1-V1)
    發表于 02-02 18:54 ?2次下載
    <b class='flag-5'>RH850</b>/<b class='flag-5'>U2A</b> 516pin 用戶手冊: PiggyBack Board (Y-<b class='flag-5'>RH850-U2A</b>-516PIN-PB-T1-V1)

    RH850/U2A 仿真適配器用戶手冊

    RH850/U2A 仿真適配器用戶手冊
    發表于 03-15 19:02 ?1次下載
    <b class='flag-5'>RH850</b>/<b class='flag-5'>U2A</b> 仿真適配器用戶手冊

    RH850/U2A 516pin背負板V1

    RH850/U2A 516pin背負板V1
    發表于 03-15 19:57 ?0次下載
    <b class='flag-5'>RH850</b>/<b class='flag-5'>U2A</b> 516pin背負板V1

    RH850/U2A 176pin 用戶手冊:Piggyback Board(Y-RH850-U2A-176PIN-PB-T1-V1)

    RH850/U2A 176pin 用戶手冊:Piggyback Board (Y-RH850-U2A-176PIN-PB-T1-V1)
    發表于 06-30 19:23 ?0次下載
    <b class='flag-5'>RH850</b>/<b class='flag-5'>U2A</b> 176pin 用戶手冊:Piggyback Board(Y-<b class='flag-5'>RH850-U2A</b>-176PIN-PB-T1-V1)

    RH850/U2A 292pin 用戶手冊:搭載板(Y-RH850-U2A-292PIN-PB-T1-V2)

    RH850/U2A 292pin 用戶手冊:搭載板(Y-RH850-U2A-292PIN-PB-T1-V2)
    發表于 06-30 20:03 ?9次下載
    <b class='flag-5'>RH850</b>/<b class='flag-5'>U2A</b> 292pin 用戶手冊:搭載板(Y-<b class='flag-5'>RH850-U2A-292PIN-PB-T1-V2</b>)

    RH850/U2A 144pin 用戶手冊:搭載板(Y-RH850-U2A-144PIN-PB-T1-V1)

    RH850/U2A 144pin 用戶手冊:搭載板(Y-RH850-U2A-144PIN-PB-T1-V1)
    發表于 06-30 20:03 ?10次下載
    <b class='flag-5'>RH850</b>/<b class='flag-5'>U2A</b> 144pin 用戶手冊:搭載板(Y-<b class='flag-5'>RH850-U2A</b>-144PIN-PB-T1-V1)

    RH850/U2A 373pin 用戶手冊:Piggyback Board(Y-RH850-U2A-373PIN-PB-T1-V1)

    RH850/U2A 373pin 用戶手冊:Piggyback Board (Y-RH850-U2A-373PIN-PB-T1-V1)
    發表于 06-30 20:07 ?1次下載
    <b class='flag-5'>RH850</b>/<b class='flag-5'>U2A</b> 373pin 用戶手冊:Piggyback Board(Y-<b class='flag-5'>RH850-U2A</b>-373PIN-PB-T1-V1)

    RH850/U2A 292pin 用戶手冊:搭載板(Y-RH850-U2A-292PIN-PB-T1-V1)

    RH850/U2A 292pin 用戶手冊:搭載板(Y-RH850-U2A-292PIN-PB-T1-V1)
    發表于 07-04 18:40 ?0次下載
    <b class='flag-5'>RH850</b>/<b class='flag-5'>U2A</b> 292pin 用戶手冊:搭載板(Y-<b class='flag-5'>RH850-U2A</b>-292PIN-PB-T1-V1)

    RH850/U2A 516pin 用戶手冊: PiggyBack Board(Y-RH850-U2A-516PIN-PB-T1-V1)

    RH850/U2A 516pin 用戶手冊: PiggyBack Board (Y-RH850-U2A-516PIN-PB-T1-V1)
    發表于 07-04 18:40 ?1次下載
    <b class='flag-5'>RH850</b>/<b class='flag-5'>U2A</b> 516pin 用戶手冊: PiggyBack Board(Y-<b class='flag-5'>RH850-U2A</b>-516PIN-PB-T1-V1)
    主站蜘蛛池模板: 热综合一本伊人久久精品| 久久精品免费观看久久| 国产欧美国日产在线播放| 国产精品麻豆a在线播放| 国产这里有精品| 精品久久伦理中文字幕| 旧里番YY6080在线播放| 欧美另类老少配hd| 色综合久久综合网观看| 亚洲高清中文字幕免费| 野花影院手机在线观看| 51成人精品午夜福利AV免费七| a级销魂美女| 国产精品1区2区| 久久re视频这里精品09免费| 嫩草影院在线观看精品| 色多多污版app下载网站| 亚洲色爽视频在线观看| 99E久热只有精品8在线直播| 公和熄洗澡三级中文字幕| 好满射太多了装不下了视频| 麻豆精品一卡2卡三卡4卡免费观看| 青青草久久伊人| 亚洲国产精品天堂在线播放| 2019久久视频这里有精品15| 成人无码国产AV免费看| 好男人在线观看视频观看高清视频免费| 久久夜色精品国产亚州AV卜| 日本特黄的免费大片视频| 亚洲AV无码一区二区色情蜜芽| 在线va无卡无码高清| 俄罗斯大白屁股| 久久国产香蕉视频| 色婷婷五月综合久久中文字幕| 亚洲综合视频| 抽插的日日液液H| 久久高清内射无套| 十九禁啊啪射视频在线观看| 在线色av| 国产麻豆剧看黄在线观看| 男人私gay挠脚心vk视频|