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

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

ARM架構(gòu)和總線協(xié)議如何支持Linux原子操作?

Linux閱碼場(chǎng) ? 來源:未知 ? 作者:易水寒 ? 2018-08-18 10:57 ? 次閱讀

這篇文章探討ARM架構(gòu)和總線協(xié)議如何來支持的。對(duì)于某款A(yù)RM處理器和總線CCI,CCN和CMN產(chǎn)品的具體實(shí)現(xiàn),屬于實(shí)現(xiàn)層面的微架構(gòu),一般需要NDA,這里不予討論。

順便提一下,在ARMv8 架構(gòu)下對(duì)應(yīng)的是LDXR (load exclusive register 和STXR (store exclusiveregister)及其變種指令,另外,在ARMv8.1架構(gòu)中引入atomic instruction, 例如LDADD (Atomic add),CAS(Compare and Swap)等。

Exclusive monitor

首先,作為一個(gè)愛問為什么的工程師,一定會(huì)想到LDXR/ STXR和一般的LDR/STR有什么區(qū)別。這個(gè)區(qū)別就在于LDXR除了向memory發(fā)起load請(qǐng)求外,還會(huì)記錄該memory所在地址的狀態(tài)(一般ARM處理器在同一個(gè)cache line大小,也就是64 byte的地址范圍內(nèi)共用一個(gè)狀態(tài)),那就是Open和Exclusive。

我們可以認(rèn)為一個(gè)叫做exclusive monitor的模塊來記錄。根據(jù)CPU訪問內(nèi)存地址的屬性(在頁(yè)表里面定義),這個(gè)組件可能在處理器 L1 memory system, 處理器cluster level, 或者總線,DDR controller上。

下面是Arm ARM架構(gòu) [1] 文檔定義的狀態(tài)轉(zhuǎn)換圖

實(shí)例說明:

1)CPU1發(fā)起了一個(gè)LDXR的讀操作,記錄當(dāng)前的狀態(tài)為Exclusive

2)CPU2發(fā)起了一個(gè)LDXR的讀操作,當(dāng)前的狀態(tài)為Exclusive,保持不變

3)CPU2發(fā)起了一個(gè)STXR的寫操作,狀態(tài)從Exclusive變成Open,同時(shí)數(shù)據(jù)回寫到DDR

4)CPU1發(fā)起了一個(gè)STXR的寫操作,因?yàn)楫?dāng)前的exclusive monitor狀態(tài)為Open,寫失敗(假如程序這時(shí)用STR操作來寫,寫會(huì)成功,但是這個(gè)不是原子操作函數(shù)的本意,屬于編程錯(cuò)誤)

假如有多個(gè)CPU,同時(shí)對(duì)一個(gè)處于Exclusive的memory region來進(jìn)行寫,CPU有內(nèi)部邏輯來保證串行化。

Monitor的狀態(tài)除了STXR會(huì)清掉,從Exclusive變成Open之外,還有其他因素也可以導(dǎo)致monitor的狀態(tài)被清掉,所以軟件在實(shí)現(xiàn)spinlock的時(shí)候,一般會(huì)用一個(gè)loop循環(huán)來實(shí)現(xiàn),所謂“spin”。

Exclusive monitor實(shí)現(xiàn)所處的位置

根據(jù)LDXR/STXR 訪問的memory的屬性,需要的monitor可以在CPU內(nèi)部,總線,也可以DDR controller(例如ARM DMC-400 [2]在每個(gè)memory interface 支持8個(gè) exclusive access monitors)。

一般Memory屬性配置為 normal cacheable, shareable,這種情形下,CPU發(fā)起的exclusive access會(huì)終結(jié)在CPU cluster內(nèi)部,對(duì)外的表現(xiàn),比如cacheline fill和line eviction和正常的讀寫操作產(chǎn)生的外部行為是一樣的。具體實(shí)現(xiàn)上,需要結(jié)合local monitor的狀態(tài)管理和cache coherency 的處理邏輯,比如MESI/MOESI的cacheline的狀態(tài)管理來。

為方便大家理解,下面劃出一個(gè)monitor在一個(gè)假象SOC里面的邏輯圖(在一個(gè)真實(shí)芯片里面,不是所有monitor都會(huì)實(shí)現(xiàn),需要和SOC vendor確認(rèn))

External exclusive monitor

對(duì)于normal non-cacheable,或者Device類型的memory屬性的memory地址,cpu會(huì)發(fā)出exclusive access的AXI 訪問(AxLOCK signals )到總線上去,總線需要有對(duì)應(yīng)的External exclusive monitor支持,否則會(huì)返回錯(cuò)誤。例如, 假如某個(gè)SOC不支持外部global exclusivemonitor,軟件把MMU disabled的情況下,啟動(dòng)SMP Linux,系統(tǒng)是沒法啟動(dòng)起來的,在spinlock處會(huì)掛掉。

AMBA AXI/ACE 規(guī)范

The exclusive access mechanism can provide semaphore-type operations without requiring the bus to remain dedicated to a particular master for the duration of the operation. This means the semaphore-type operations do not impact either the bus access latency or the maximum achievable bandwidth.

The AxLOCK signals select exclusive access, and the RRESP and BRESP signals indicate the success or failure of the exclusive access read or write respectively.

The slave requires additional logic to support exclusive access. The AXI protocol provides a mechanism to indicate when a master attempts an exclusive access to a slave that does not support it.

Atomic指令的支持

處理器,支持cache coherency協(xié)議的總線,或者DDR controller可以增加了一些簡(jiǎn)單的運(yùn)算,比如,在讀寫指令產(chǎn)生的memory訪問的過程中一并把簡(jiǎn)單的運(yùn)算給做了。

AMBA 5 [3] 里面增加了對(duì)Atomic transactions的支持:

AMBA 5 introduces Atomic transactions, which perform more than just a single access, and have some form of operation that is associated with the transaction.

Atomic transactions are suited to situations where the data is located a significant distance from the agent that must perform the operation. Previously, performing an operation that is atomically required pulling the data towards the agent, performing the operation, and then pushing the result back.

Atomic transactions enable sending the operation to the data, permitting the operation to be performed closer to where the data is located.

The key advantage of this approach is that it reduces the amount of time during which the data must be made inaccessible to other agents in the system.

支持4種Atomic transaction:AtomicStore ,AtomicLoad,AtomicSwap 和AtomicCompare

QA

1) Local monitor和Global monitor的使用場(chǎng)景

* Local monitor適用于訪問的memory屬為normal cacheable, shareable或者non-shareable的情況.

* Global monitor ,準(zhǔn)確來說,external global exclusive monitor (處理器之外,在外部總線上)用于normal noncacheable或者device memory類型。比如可以用于一個(gè)Cortex-A處理器和一個(gè)Cortex-M 處理器(沒有內(nèi)部cache)之間的同步。

2)多CPU下,多個(gè)LDREX,和STREX的排他性實(shí)現(xiàn)

* 各個(gè)處理器和總線的實(shí)現(xiàn)不同,可以從軟件上理解為和data coherency實(shí)現(xiàn)相結(jié)合,比如M(O)ESI協(xié)議[5],這是一種Invalidate-basedcache coherence protocol, 其中的key point就是當(dāng)多個(gè)CPU在讀同一個(gè)cacheline的時(shí)候,在每個(gè)CPU的內(nèi)部cache里面都有cacheline allocation, cacheline的狀態(tài)會(huì)變成Shared;但是當(dāng)某個(gè)CPU做寫的時(shí)候,會(huì)把其它CPU里面的cacheline數(shù)據(jù)給invalidate掉,然后寫自己的cacheline數(shù)據(jù),同時(shí)設(shè)置為Modified狀態(tài),從而保證了數(shù)據(jù)的一致性。

* LDREX,本質(zhì)上是一個(gè)LDR,CPU1做cache linefill,然后設(shè)置該line為E狀態(tài)(Exclusive),額外的一個(gè)作用是設(shè)置exclusive monitor的狀態(tài)為Exclusive;其他cpu做LDREX,該line也會(huì)分配到它的內(nèi)部cache里面,狀態(tài)都設(shè)置為Shared ,也會(huì)設(shè)置本CPU的monitor的狀態(tài)。當(dāng)一個(gè)CPU 做STREX時(shí)候,這個(gè)Write操作會(huì)把其它CPU里面的cacheline數(shù)據(jù)給invalidate掉。同時(shí)也把monitor的狀態(tài)清掉,從Exclusive變成Open的狀態(tài),這個(gè)MESI協(xié)議導(dǎo)致cachline的狀態(tài)在多CPU的變化,是執(zhí)行Write操作一次性改變的。這樣在保證數(shù)據(jù)一致性的同時(shí),也保證了montitor的狀態(tài)更新同步改變。

3)比如舉一個(gè)多核的場(chǎng)景,一個(gè)核ldrex了,如果本核的local monitor會(huì)發(fā)生什么,外部的global monitor發(fā)生什么,開不開mmu,cache不cache,區(qū)別和影響是什么。

Ldrex/strex本來就是針對(duì)多核的場(chǎng)景來設(shè)計(jì)的,local monitor的狀態(tài)發(fā)生改變,不會(huì)影響外部的global monitor狀態(tài)。但是external global monitor的狀態(tài)發(fā)生改變,可以告訴處理器,把local monitor的狀態(tài)清掉。

Data coherency是通過硬件來支持的。對(duì)于normal cacheable類型的memory, MMU和DCache必須使能,否則CPU會(huì)把exclusive類型的數(shù)據(jù)請(qǐng)求發(fā)出處理器,這時(shí)需要外部monitor的支持。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • ARM
    ARM
    +關(guān)注

    關(guān)注

    134

    文章

    9084

    瀏覽量

    367384
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11292

    瀏覽量

    209328
  • 總線
    +關(guān)注

    關(guān)注

    10

    文章

    2878

    瀏覽量

    88051

原文標(biāo)題:羅玉平: 關(guān)于ARM Linux原子操作的底層支持

文章出處:【微信號(hào):LinuxDev,微信公眾號(hào):Linux閱碼場(chǎng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    X86和ARM中的指令集支持原子操作

    裸機(jī)開發(fā)與RTOS開發(fā)一個(gè)非常重要的區(qū)別在于多線程之間的消息傳遞和數(shù)據(jù)共享問題,然而在這中間變量的原子操作是一個(gè)非常重要的話題,不同的處理器架構(gòu)和編譯選項(xiàng)都可能生成不同的指令,從而影響到變量的
    發(fā)表于 07-06 16:10 ?1904次閱讀
    X86和<b class='flag-5'>ARM</b>中的指令集<b class='flag-5'>支持</b><b class='flag-5'>原子</b><b class='flag-5'>操作</b>

    工程師深談ARM+FPGA的設(shè)計(jì)架構(gòu)

    控制器等,在ARM端直接對(duì)相關(guān)的SPI通信控制器操作就可以了。而FPGA這一端可作為SPI從,按照SPI協(xié)議的時(shí)序?qū)懞脧脑O(shè)備接口,這個(gè)工作量沒有多大,所以相對(duì)都比較容易。[/url]另一種是數(shù)據(jù)量
    發(fā)表于 01-12 19:00

    ARM架構(gòu)是什么

    從單片機(jī)轉(zhuǎn)到ARM,主要需要學(xué)習(xí)ARM架構(gòu)ARM相比單片機(jī)多了一些外設(shè)和總線。在僅僅是裸奔的情況下,如果熟悉了
    發(fā)表于 07-01 09:23

    ARM架構(gòu)簡(jiǎn)單介紹

    ARM架構(gòu)簡(jiǎn)單介紹市場(chǎng)上成百上千種的 ARM 芯片,如果我們?nèi)タ此鼈兊膬?nèi)核,卻只有不多的幾種。從時(shí)間上來看,從1985年設(shè)計(jì)的 26 位地址總線的 ARMv1, 到 ARMv2, 一直
    發(fā)表于 12-06 07:29

    SOC芯片之互聯(lián)總線協(xié)議相關(guān)資料分享

    1、對(duì)APB總線的理解之前,說了片上互聯(lián)總線,但是光有總線可是不行的,還需要片上總線協(xié)議支持才行
    發(fā)表于 07-18 16:26

    設(shè)備仿真模擬軟件 QEMU 8.0 發(fā)布:改進(jìn)對(duì) ARM / RISC-V 架構(gòu)支持

    和 HPPA 平臺(tái)帶來各種新功能和改進(jìn)。 QEMU (Quick Emulator)是業(yè)界主流的設(shè)備仿真模擬軟件之一,可以在一種架構(gòu)(如 X86 PC)的物理機(jī)上運(yùn)行支持其它架構(gòu)操作
    發(fā)表于 05-05 09:48

    基于嵌入式系統(tǒng)異構(gòu)總線原子協(xié)議錐匹配

    針對(duì)異構(gòu)總線嵌入系統(tǒng)難以進(jìn)行部件移植和接口互換問題,提出基于嵌入系統(tǒng)異構(gòu)總線原子協(xié)議錐匹配方法,分析接口協(xié)議
    發(fā)表于 04-20 08:50 ?15次下載

    Linux環(huán)境下實(shí)現(xiàn)ARM9的CAN總線通信

    Linux環(huán)境下實(shí)現(xiàn)ARM9的CAN總線通信 1.  引言CAN(Controller Area Network)總線最早是由德國(guó)BOSCH公司提出,實(shí)現(xiàn)汽車環(huán)境中的微控制
    發(fā)表于 11-02 15:06 ?995次閱讀
    <b class='flag-5'>Linux</b>環(huán)境下實(shí)現(xiàn)<b class='flag-5'>ARM</b>9的CAN<b class='flag-5'>總線</b>通信

    手機(jī)支持Linux操作系統(tǒng)

    手機(jī)支持Linux操作系統(tǒng)   Linux系統(tǒng):Linux系統(tǒng)是一個(gè)源代碼開放的
    發(fā)表于 01-28 17:07 ?1825次閱讀

    ARM+Linux設(shè)計(jì)的CAN總線和MiniGUI的虛擬儀表

    ARM+Linux設(shè)計(jì)的CAN總線和MiniGUI的虛擬儀表技術(shù) 摘  要: 基于ARM+Linux架構(gòu),通過CAN總線獲得數(shù)
    發(fā)表于 05-06 17:24 ?1789次閱讀

    ARM架構(gòu)應(yīng)用實(shí)例_操作系統(tǒng)

    ARM嵌入式應(yīng)用程序架構(gòu)設(shè)計(jì)實(shí)例精講--ARM架構(gòu)應(yīng)用實(shí)例03操作系統(tǒng)
    發(fā)表于 07-08 11:08 ?0次下載

    淺談鴻蒙內(nèi)核源碼的原子操作

    ARMv6架構(gòu)引入了LDREX和STREX指令,以支持對(duì)共享存儲(chǔ)器更縝密的非阻塞同步。由此實(shí)現(xiàn)的原子操作能確保對(duì)同一數(shù)據(jù)的“讀取-修改-寫入”操作
    的頭像 發(fā)表于 04-25 16:05 ?1265次閱讀
    淺談鴻蒙內(nèi)核源碼的<b class='flag-5'>原子</b><b class='flag-5'>操作</b>

    使用Linux原子操作實(shí)現(xiàn)互斥點(diǎn)燈

    Linux原子操作是指不能再進(jìn)一步分割的操作,一般原子操作用于變量或者位
    的頭像 發(fā)表于 04-13 15:07 ?875次閱讀
    使用<b class='flag-5'>Linux</b><b class='flag-5'>原子</b><b class='flag-5'>操作</b>實(shí)現(xiàn)互斥點(diǎn)燈

    Emulex HBA CLI ARM架構(gòu)上的Linux發(fā)行說明

    電子發(fā)燒友網(wǎng)站提供《Emulex HBA CLI ARM架構(gòu)上的Linux發(fā)行說明.pdf》資料免費(fèi)下載
    發(fā)表于 08-10 16:28 ?0次下載
    Emulex HBA CLI <b class='flag-5'>ARM</b><b class='flag-5'>架構(gòu)</b>上的<b class='flag-5'>Linux</b>發(fā)行說明

    arm架構(gòu)和x86架構(gòu)區(qū)別 linux是x86還是arm

    ARM架構(gòu)和x86架構(gòu)是兩種不同的計(jì)算機(jī)處理器架構(gòu),它們?cè)隗w系結(jié)構(gòu)、指令集、應(yīng)用領(lǐng)域等方面有著明顯的區(qū)別。Linux
    的頭像 發(fā)表于 01-30 13:46 ?1.8w次閱讀
    主站蜘蛛池模板: 九九影院午夜理论片无码| 女子扒开腿让男生桶爽| 手机在线看片欧美亚洲| 4399日本电影完整版在线观看免费 | 国产欧洲野花A级| 欧美成人免费观看久久| 亚洲综合久久一本伊伊区| 国产99精品视频一区二区三区| 美女张开腿露尿口给男人亲| 亚洲精品国产专区91在线| 北条麻妃夫の友人196| 两个客户一起吃我的奶| 亚洲欧美综合在线中文| 成人免费肉动漫无遮网站| 免费特黄一区二区三区视频一| 一久久| 国产永久视频| 窝窝影院午夜看片毛片 | 出轨的妻子在线观看| 蜜柚影院在线观看免费高清中文| 亚洲中文在线精品国产| 国产久久热99视频| 色婷婷五月综合中文字幕| https黄视| 男人脱女人衣服吃奶视频| 中国大陆一级毛片免费| 精品久久久99大香线蕉| 亚洲AV 无码AV 中文字幕| 国产AV电影区二区三区曰曰骚网| 欧亚一卡二卡日本一卡二卡 | 成人国产在线不卡视频| 女性露出奶头流出精子| 116美女写真午夜电影z| 久久久91精品国产一区二区 | 俄罗斯videosbest8| 青柠电影在线看| gayxxxxgay呻吟受日本| 欧美 日韩 亚洲 在线| 97色伦图片7778久久| 伦理片飘花免费影院| 最近中文字幕mv手机免费高清|