一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

EC SRAM映射到CPU Memory空間的共享內(nèi)存設(shè)計(jì)

CHANBAEK ? 來源: 吃面小哥 ? 作者: 吃面小哥 ? 2023-11-18 15:11 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

ShareMemory,顧名思義就是共享內(nèi)存。這個(gè)概念在很多計(jì)算機(jī)系統(tǒng)中都存在,本文特指 EC SRAM 映射到 CPU Memory 空間的共享內(nèi)存設(shè)計(jì)。

01—ShareMemory 簡(jiǎn)介

此處的 ShareMemory 特指,在 EC 和 CPU(x86/ARM) 通過 eSPI/LPC 總線連接的系統(tǒng)中,EC SRAM 映射到 Host Memory 空間。當(dāng) Host 端需要訪問 EC SRAM 時(shí),就和訪問 Host 的 Memory 一樣簡(jiǎn)便。

ShareMemory 的設(shè)計(jì)極大提高了CPU 和 EC 之間的數(shù)據(jù)傳輸效率。

eSPI/LPC 的 Master Controller,一般作為一個(gè) PCI 設(shè)備存在。因此可以通過修改 eSPI/LPC Controller 的 PCI 配置空間寄存器將指定的 IO 空間和 Memory 空間等資源分配給 eSPI/LPC Master Controller。

當(dāng) OS 或者應(yīng)用軟件通過 CPU 指令訪問指定 IO端口,或者訪問指定 Memory 地址時(shí),訪問操作會(huì)被轉(zhuǎn)發(fā)至 eSPI/LPC 的

Controller。最終由 eSPI/LPC Controller

生成通訊協(xié)議發(fā)送給 eSPI/LPC 總線上連接的從設(shè)備,如下圖所示。

圖片

eSPI/LPC Slave 一般有 EC、BMC、SIO 等。以EC 為例,當(dāng)從設(shè)備接到 eSPI/LPC 總線上的 Memory Cycle后,eSPI/LPC Slave Controller 就會(huì)解碼 Memory 地址。

如果發(fā)現(xiàn)該地址在配置的Memory 空間內(nèi),eSPI/LPC Slave Controller 就會(huì)把數(shù)據(jù)寫入指定的 SRAM,或者將指定SRAM 的值返回。如此就完成了 EC SRAM 映射到 CPU Memory 空間,這就是 EC ShareMemory 實(shí)現(xiàn)的原理。

圖片

02—CPU 端的配置

由于設(shè)計(jì)上的差異,不同 CPU 針對(duì)

ShareMemory 的配置有所不同。

x86 Intel 平臺(tái)

在 Intel 平臺(tái)上,eSPI 和 LPC Controller 都是作為一個(gè) PCI 設(shè)備存在,兩個(gè)控制器的 PCI 設(shè)備號(hào)一致,都是B0:D31:F0,實(shí)際使

用時(shí)二選一。

如下圖所示,配置 Offset 98h 寄存器,即可把 CPU 的指定Memory 空間分配給

eSPI/LPC Master Controller。

圖片

圖片

x86 AMD 平臺(tái)

在 AMD 平臺(tái)上 eSPI 的配置寄存器先被映射到指定的 Memory 空間。配置eSPI MMIO 寄存器即可把指定的CPU Memory 空間分配給 eSPI 控制器。eSPI 配置空間基地址為 0xFEC2_0000,MMIO 基地址配置寄存器為 Offset 50/54/58/5C,長(zhǎng)度配置寄存器為 Offset 60/64。

圖片

圖片

注意 : 此處的寄存器配置后直接生效。

ARM Phytium 平臺(tái)

飛騰平臺(tái)上的 LPC Controller 作為一個(gè)外設(shè)存在,支持 DMA模式、IO模式、

Memory模式、FirmwareMemory 模式。

由寄存器 INT_APB_SPCE_CONF 配置,每個(gè)模塊占用Memory 空間大小為 32M。

如下表格所示訪問 CPU Memory 空間 0x20000062,會(huì)發(fā)起 LPC 的 IO Cycle(IO Port 62)。

訪問 CPU Memory 空間 0x22000000,

會(huì)發(fā)起 LPC 的 Memory Cycle。

LPC Controller 的 CPU Memory 資源劃分如下:

模塊基地址
IO0x20000000
Memory0x22000000
FirmwareMemory0x24000000
DMA0x26000000

其他 CPU 平臺(tái)

eSPI/LPC Master Controller 的資源分配方法在不同的 CPU 平臺(tái)上都不一樣,需要

根據(jù) CPU 指導(dǎo)手冊(cè)完成配置。

03—EC 端的配置

EC 的硬件設(shè)計(jì)中,一般有個(gè)

ShareMemory Controller,作為一個(gè)SIO設(shè)備存在,負(fù)責(zé)處理 eSPI/LPC 總線上的 Memory Cycle。

EC 端有如下兩個(gè)參數(shù)需要配置:

第一,指定可識(shí)別的 Host 端的Memory 基地址。這就指明了 EC 可解碼的

Host Memory 起始地址。配置寄存器一般位于 SIO 配置空間。

第二,指定EC端匹配的 SRAM 基地址和長(zhǎng)度。這就指明了 EC 端的某段

SRAM 空間被映射到 Host Memory 空間。配置寄存器一般位于 EC 的

ShareMemory Controller 內(nèi)。

上述2個(gè)配置參數(shù)的配置方法以及寄存器位置,查閱對(duì)應(yīng) EC 芯片的用戶手冊(cè)即可獲取。如下圖所示,是基于 eSPI 總線實(shí)現(xiàn)

ShareMemory 訪問功能后,Host 讀寫

EC SRAM 的通訊波形。

圖片

圖片

EC 端和 CPU 端都完成相應(yīng)配置后,在OS 下訪問 Memory 即可訪問到指定的 EC SRAM 存儲(chǔ)區(qū)間。

下圖 Intel ADL 平臺(tái)和 EC 的配置結(jié)果,最終實(shí)現(xiàn)了 EC SRAM 0x300映射到

Host Memory 空間的 0xFE800300 位置。

圖片

下圖是 AMD Ryzen7840 平臺(tái)和 EC 配置結(jié)果,最終實(shí)現(xiàn)了 EC

SRAM 0x300 映射到 Host Memory 空間的 0xFE0B0300 位置。

圖片

04—ShareMemory 的應(yīng)用

ShareMemory 的目的就是把 EC 的 SRAM 存儲(chǔ)映射到 CPU Memory 空間,如此 CPU 就可以快速完成大量的 EC 數(shù)據(jù)訪問。使用 EC 端提供的

ShareMemory Semaphore,Host 訪問完 EC SRAM 還可以通知 EC 內(nèi)核。

ACPI 規(guī)范定義的 ECI 也可以訪問 EC SRAM,但是涉及到狀態(tài)位的等待同步,訪問速度沒有 ShareMemory 快。

因此 Host 和 EC 之間有大量數(shù)據(jù)需要傳遞的時(shí)候,ShareMemory 就是第一方案。當(dāng)然EC SRAM也可以映射到 CPU的 IO 空間,實(shí)現(xiàn)原理一樣。只是方向 CPU IO端口,最終會(huì)在eSPI/LPC 總線上發(fā)起 IO Cycle,EC端接到后按映射關(guān)系轉(zhuǎn)換為 SRAM的訪問即可。

聲明:本文內(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

    文章

    9353

    瀏覽量

    377635
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    11080

    瀏覽量

    217116
  • sram
    +關(guān)注

    關(guān)注

    6

    文章

    786

    瀏覽量

    115975
  • 計(jì)算機(jī)
    +關(guān)注

    關(guān)注

    19

    文章

    7663

    瀏覽量

    90824
  • 共享內(nèi)存
    +關(guān)注

    關(guān)注

    0

    文章

    16

    瀏覽量

    8423
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    如何將共享代碼映射到DSPR5以及將其映射到其他RAM區(qū)域?

    Scratch-Pad SramCPU5 DSPR)相關(guān)聯(lián)。 在鏈接器腳本中,我已經(jīng)映射了每個(gè).text 部分移至其各自的 PSPR 內(nèi)核。 我想知道如何將共享代碼
    發(fā)表于 01-24 07:26

    Linux的mmap文件內(nèi)存映射機(jī)制

    一。mmap系統(tǒng)調(diào)用使得進(jìn)程之間通過映射同一個(gè)普通文件實(shí)現(xiàn)共享內(nèi)存。普通文件被映射到進(jìn)程地址空間后,進(jìn)程可以像訪問普通
    發(fā)表于 03-08 09:54

    請(qǐng)問如何在platform文件中實(shí)現(xiàn)將msmc映射到0xa0000000起始的地址空間中?

    用openmp時(shí)講到,需要將共享的變量放到no cacheable的空間中。對(duì)于6678片子來講,如果想要放到共享內(nèi)存中,要么將msmc全部設(shè)為no cacheable,或者將部分ms
    發(fā)表于 07-24 08:40

    為何啟動(dòng)模式為SRAM時(shí)0x20000000不會(huì)映射到0x00000000 ?

    0x00000000BOOT0:1,BOOT1:1時(shí)為SRAM啟動(dòng),但0x20000000不會(huì)映射到0x00000000,在0x00000000區(qū)域看到的資料都是0xAA,我設(shè)置BOOT0:1,BOOT1:1 SRAM模式
    發(fā)表于 07-29 04:35

    使用UARTLite IP如何找到內(nèi)存映射IO方法

    ); if(memfd == -1){printf(“無法打開/dev/mem.\n”);出口(0); } printf(“/ dev / mem opens。\ n”);//將一頁內(nèi)存映射到用戶空間,以便
    發(fā)表于 04-16 10:07

    linux如何共享內(nèi)存實(shí)驗(yàn)

    ;);  del_sem(semid);  exit(1);  }  /* 將共享內(nèi)存地址映射到當(dāng)前進(jìn)程地址空間 */  shared_memory
    發(fā)表于 06-08 07:47

    共享內(nèi)存知識(shí)記錄

    最近學(xué)習(xí)了共享內(nèi)存,做筆記記錄一下。 預(yù)計(jì)會(huì)補(bǔ)全 信號(hào)量和消息隊(duì)列。我理解的共享內(nèi)存共享內(nèi)存
    發(fā)表于 12-15 06:37

    地址總線是要映射到FPGA的內(nèi)部還是直接ARM的內(nèi)存空間

    ARM跟FPGA通信,要采用8位地址總線、8位數(shù)據(jù)總線、讀寫控制線,怎么實(shí)現(xiàn),地址總線是要映射到FPGA的內(nèi)部還是直接ARM的內(nèi)存空間?最好有ARM端簡(jiǎn)單的C程序描述下,謝謝。
    發(fā)表于 11-22 14:58

    STM32G0將地址0x00000000重新映射到SRAM不起作用咋辦

    ();__HAL_SYSCFG_REMAPMEMORY_SRAM();不幸的是,這不起作用,0x00000000 仍然映射到 FLASH。如果我嘗試重新映射到系統(tǒng)內(nèi)存,它工作得很好:_
    發(fā)表于 12-22 06:18

    ESP32-D0WDR2-V3帶外接flash和emmc,外部閃存將無法將內(nèi)存映射到cpu內(nèi)存空間是怎么回事?

    用途?!?這似乎暗示相關(guān)的引腳(SD_DATA0-3、SD_CLK、GPIO16)被嵌入式PSRAM使用,不能連接到外部閃存或emmc。任何人都可以確認(rèn)是否是這種情況?但是如果不使用這些 PIN,外部閃存將無法將內(nèi)存映射到 cpu
    發(fā)表于 04-12 06:01

    淺析linux內(nèi)存映射原理

    內(nèi)存映射,簡(jiǎn)而言之就是將用戶空間的一段內(nèi)存區(qū)域映射到內(nèi)核空間,
    發(fā)表于 08-24 09:35 ?1773次閱讀
    淺析linux<b class='flag-5'>內(nèi)存</b><b class='flag-5'>映射</b>原理

    世上最好的共享內(nèi)存(Linux共享內(nèi)存最透徹的一篇)上集

    現(xiàn)階段廣泛應(yīng)用于多媒體、Graphics領(lǐng)域的共享內(nèi)存方式,某種意義上不再?gòu)?qiáng)調(diào)映射到進(jìn)程虛擬地址空間的概念(那無非是為了讓CPU訪問),而更
    的頭像 發(fā)表于 11-29 14:29 ?1.9w次閱讀

    深入剖析Linux共享內(nèi)存原理

    在Linux系統(tǒng)中,每個(gè)進(jìn)程都有獨(dú)立的虛擬內(nèi)存空間,也就是說不同的進(jìn)程訪問同一段虛擬內(nèi)存地址所得到的數(shù)據(jù)是不一樣的,這是因?yàn)椴煌M(jìn)程相同的虛擬內(nèi)存地址會(huì)映射到不同的物理
    的頭像 發(fā)表于 10-30 09:52 ?2539次閱讀
    深入剖析Linux<b class='flag-5'>共享</b><b class='flag-5'>內(nèi)存</b>原理

    單片機(jī)的內(nèi)存映射圖解析

    內(nèi)存空間。 然后我們操作外設(shè)時(shí),只需要操作它對(duì)應(yīng)的內(nèi)存地址即可。更加詳細(xì)的外設(shè)內(nèi)存地址,可以參考芯片的用戶手冊(cè)(不是數(shù)據(jù)手冊(cè))的Memory map章節(jié)。 因?yàn)閱纹瑱C(jī)是將外設(shè)
    的頭像 發(fā)表于 06-22 10:33 ?1648次閱讀
    單片機(jī)的<b class='flag-5'>內(nèi)存</b><b class='flag-5'>映射</b>圖解析

    內(nèi)存是怎么映射到物理地址空間的?內(nèi)存是連續(xù)分布的嗎?

    如果我們將兩個(gè)4G內(nèi)存插入內(nèi)存插槽,得到的內(nèi)存地址空間是0到8G嗎?是不是0到4G是第一根內(nèi)存,4到8G是第二根
    的頭像 發(fā)表于 06-30 15:59 ?4342次閱讀
    <b class='flag-5'>內(nèi)存</b>是怎么<b class='flag-5'>映射到</b>物理地址<b class='flag-5'>空間</b>的?<b class='flag-5'>內(nèi)存</b>是連續(xù)分布的嗎?