日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

12. 自制操作系统: risc-v ACLINT

發布時間:2024/3/12 windows 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 12. 自制操作系统: risc-v ACLINT 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

ACLINT全稱: Advanced Core Local?Interruptor

1.介紹

這個RISC-V ACLINT規范定義了一組內存映射設備,這些設備在一個多HART RISC-V平臺上為每個HART提供處理器間中斷(IPI)和定時器功能。這些hart級的IPI和定時器功能是在多hart RISC-V平臺上運行的操作系統、引導加載程序和固件所必需的。

SiFive核心本地中斷器(CLINT)在RISC-V世界中被廣泛采用,以提供機器級IPI和定時器功能。不幸的是,SiFive CLINT對于IPI和定時器功能都有一個統一的寄存器映射,并且它沒有提供supervisor-level的IPI功能。

通過為IPI和定時器功能定義單獨的內存映射設備,RISC-V ACLINT規范采用了一種更模塊化的方法。當平臺有替代機制時,這種模塊化允許RISC-V平臺省略一些RISC-V ACLINT設備。除了模塊化,RISC-V ACLINT規范還為管理級api定義了一個專用的內存映射設備。下面的表1顯示了由RISC-V ACLINT規范定義的設備列表。

1.1?與SiFive CLINT向后兼容

RISC-V ACLINT規范被定義為向后兼容SiFive CLINT規范。MTIMER和MSWI設備的寄存器定義和寄存器偏移量與SiFive CLINT規范定義的定時器和IPI寄存器兼容。RISC-V平臺上的SiFive CLINT設備在邏輯上可以被看作是一個MSWI設備和一個MTIMER設備,它們并排放置在內存地址空間中,如下表2所示

2.MTIMER

MTIMER全稱Machine-level Timer Device

MTIMER設備為RISC-V平臺上的一組hart提供機器級定時器功能。它有一個單一的固定頻率單調時間計數器(MTIME)寄存器和一個時間比較寄存器(MTIMECMP)為每個HART連接到MTIMER設備。一個沒有連接到HART的MTIMER設備應該只有MTIME寄存器,沒有mtimeecmp寄存器。

在具有多個MTIMER設備的RISC-V平臺上:

  • 每個 MTIMER 設備為不同(或不相交)的 HARTs提供機器級計時器功能。 MTIMER 設備為與其關聯的每個 HART 分配一個從零開始的 HART 索引。 MTIMER 設備分配給 HART 的 HART 索引可能與 RISC-V 特權架構分配給 HART 的唯一 HART identifier(hart ID)有關系,也可能沒有任何關系

  • 兩個或多個MTIMER設備可以共享相同的物理MTIME寄存器,同時擁有各自的mtimeecmp寄存器

  • MTIMER設備的MTIMECMP寄存器只能與同一MTIMER設備的MTIME寄存器進行比較,以產生machine-level定時器中斷

單個MTIMER設備支持的HARTs的最大數量是4095,這相當于MTIMECMP寄存器的最大數量。

2.1 Register Map

一個MTIMER設備有兩個獨立的基地址:MTIME寄存器的基地址和MTIMECMP寄存器的基地址。單個 MTIMER 設備的獨立基地址允許多個 MTIMER 設備共享同一個物理 MTIME 寄存器。

下面的表 3 顯示了 MTIME 寄存器的映射,而下面的表 4 顯示了 MTIMECMP 寄存器相對于單獨基地址的映射

2.2.? MTIME Register (Offset: 0x00000000)

MTIME寄存器是一個64位讀寫寄存器,包含基于固定參考頻率計算的周期數。

當MTIMER設備復位時,MTIME寄存器將被清除為零。

2.3. MTIMECMP Registers (Offsets: 0x00000000 -?0x00007FF0)

MTIMECMP 寄存器是 per-HART 的 64 位讀寫寄存器。 它包含 MTIME 寄存器值,其將為相應的 HART 觸發機器級定時器中斷。

當MTIME大于或等于相應寄存器MTIMECMP的值時,HART的機器級定時器中斷就掛起,當MTIME小于相應的MTIMECMP寄存器值時,HART被清除。機器級定時器中斷反映在mip CSR的MTIP位上。

當MTIMER設備復位時,MTIMECMP寄存器處于未知狀態。

2.4. Synchronizing Multiple MTIME Registers

RISC-V平臺可以將多個hart分組到分層拓撲組(例如clusters、nodes或sockets)中,其中每個拓撲組都有自己的MTIMER設備。此外,此類 RISC-V 平臺還可以允許在運行時對拓撲組(包括 MTIMER 設備)進行clock-gating或powering off。

在具有多個 MTIMER 設備駐留在同一裸片上的 RISC-V 平臺上,每個設備必須滿足所有 MTIME 寄存器相互關聯的 RISC-V 架構要求,并且所有 per-HART time CSR 彼此相關,都在一個 MTIME 滴答周期內同步。 例如,如果 MTIME 滴答周期為 10ns,則 MTIME 寄存器及其相關的time CSR 應分別同步在 10ns 以內。

在不同裸片上具有多個 MTIMER 設備的 RISC-V 平臺上,不同裸片上的 MTIME 寄存器(及其關聯的time CSR)可能僅在彼此之間大于 MTIME 滴答周期的指定間隔內同步。 平臺可以定義最大允許間隔。

為了滿足上述MTIME同步要求:

  • 所有MTIME寄存器應該具有相同的輸入時鐘,以避免在不同的MTIME寄存器(及其相關的time CSRs)之間的運行時漂移。

  • 當系統復位時,硬件必須初始化和同步所有的MTIME寄存器為零。

  • 一個MTIMER設備由于電源管理操作而停止和重新啟動時,軟件應該將這個MTIME寄存器與所有其他MTIME寄存器重新同步。

當軟件更新一個、多個或所有 MTIME 寄存器時,它必須保持前面的同步要求(通過測量并考慮對不同MTIME寄存器執行讀寫的不同延遲)。

例如,軟件可以使用以下 RISC-V 64 位匯編序列來同步一個 MTIME 寄存器與另一個 MTIME 寄存器。

清單1-在RISC-V 64位平臺上同步MTIME寄存器

/* * unsigned long aclint_mtime_sync(unsigned long target_mtime_address, * unsigned long reference_mtime_address) */ .globl aclint_mtime_sync aclint_mtime_sync:/*A. 讀取target MTIME寄存器的值到T0寄存器*/ld t0, (a0)fence i, i/* 讀取reference MTIME寄存器到T1寄存器*/ld t1, (a1)fence i, i/* 讀取target MTIME寄存器到T2寄存器*/ld t2, (a0)fence i, i/** B.計算target MTIME 調整后存入T3寄存器* T3 = T1 - ((T0 + T2) / 2)*/srli t0, t0, 1srli t2, t2, 1add t3, t0, t2sub t3, t1, t3/* * C.t4 = t3+ t4* D.更新 target MTIME 寄存器*/ld t4, (a0)add t4, t4, t3sd t4, (a0)/* 返回MTIME調整后的值*/add a0, t3, zeroret

注意:在某些 RISC-V 平臺上,MTIME 同步序列(即上面的 aclint_mtime_sync() 函數)將需要重復幾次,直到target MTIME 寄存器和reference MTIME 寄存器之間的增量為零(或非常接近于零)。

為何不直接用ref MTIME寄存器的值賦值給target MTIME?

3. MSWI

全稱: Machine-level Software?Interrupt Device

MSWI 設備為 RISC-V 平臺上的一組 HART 提供機器級 IPI 功能。 它為連接到 MSWI 設備的每個 HART 提供一個 IPI 寄存器 (MSIP)。

在具有多個 MSWI 設備的 RISC-V 平臺上,每個 MSWI 設備為不同(或不相交)的 HARTs提供機器級 IPI 功能。 MSWI 設備為與其關聯的每個 HART 分配一個從零開始的 HART 索引。 MSWI 設備分配給 HART 的 HART 索引可能與 RISC-V 特權架構分配給 HART 的唯一 HART 標識符(hart ID)有關系,也可能沒有關系。

單個MSWI設備支持的最大HARTs數量為4095,這相當于MSIP寄存器的最大數量。

3.1 Register Map

3.2. MSIP Registers (Offsets: 0x00000000 -?0x00003FF8)

每個 MSIP 寄存器都是一個 32 位寬的 WARL 寄存器,其中高 31 位被連線為零。 最低有效位反映在 mip CSR 的 MSIP 中。 通過分別向相應的 MSIP 寄存器寫入 1 或 0 來等待或清除 HART 的機器級軟件中斷。

在MSWI設備復位時,每個MSIP寄存器被清除為零。

4.SSWI

全稱: Supervisor-level Software?Interrupt Device

SSWI 設備為 RISC-V 平臺上的一組 HARTs 提供supervisor-level IPI 功能。 它提供了一個寄存器來為連接到 SSWI 設備的每個 HART 設置一個 IPI (SETSSIP)。

在具有多個 SSWI 設備的 RISC-V 平臺上,每個 SSWI 設備為不同(或不相交)的 HART 集提供管理級 IPI 功能。 SSWI 設備為與其關聯的per-HART 分配一個從零開始的 HART 索引。 SSWI 設備分配給 HART 的 HART 索引可能與 RISC-V 特權架構分配給 HART 的唯一 HART 標識符(hart ID)有關系,也可能沒有任何關系。

單個ssi設備支持的最大HARTs數量為4095,這相當于SETSSIP寄存器的最大數量。

4.1. Register Map

4.2. SETSSIP Registers (Offsets: 0x00000000 -?0x00003FF8)

每個 SETSSIP 寄存器都是一個 32 位寬的 WARL 寄存器,其中高 31 位被連線為零。 SETSSIP 寄存器的最低有效位始終讀取 0。將 0 寫入SETSSIP 寄存器不起作用,而將 1 寫入最低有效位會向相應的 HART 發送edge-sensitive中斷信號,從而導致 HART 在 mip CSR 中設置 SSIP。 對 SETSSIP 寄存器的寫入保證會體現在相應 HART 的 SSIP 中,但不一定立即體現。

注意:?在RISC-V特權架構中,SSIP定義在mip和sip CSRs中作為可寫的比特位。因此M-mode和S-mode軟件能直接清除SSIP位的。

總結

以上是生活随笔為你收集整理的12. 自制操作系统: risc-v ACLINT的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。