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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

aarch64的TCR寄存器介绍

發(fā)布時(shí)間:2025/3/21 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 aarch64的TCR寄存器介绍 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

        • 一、TCR寄存器
          • (1)、T1SZ、T0SZ
          • (2)、ORGN1、IRGN1、ORGN0、IRGN0
          • (3)、SH1、SH0
          • (4)、TG0/TG1 - Granule size
          • (5)、IPS
          • (6)、EPD1、EPD0
          • (7)、TBI1、TBI0
          • (8)、A1
          • (10)、AS
        • 二、示例展示
          • 1、設(shè)置inner/outer cache的屬性(只寫模式/回寫模式/write allocate/No-write allocate)

★★★個(gè)人博客導(dǎo)讀首頁—點(diǎn)擊此處 ★★★

相關(guān)文章
1、ARM架構(gòu)中MMU/TLB/Cache的一些概念和寄存器
2、ARMV8-aarch64的MMU學(xué)習(xí)筆記

一、TCR寄存器

在ARM Core中(aarch64),還有幾個(gè)相關(guān)的系統(tǒng)寄存器:

  • TCR_EL1 banked
  • TCR_EL2
  • TCR_EL3
比特位功能說明
ORGN1、IRGN1、ORGN0、IRGN0cache屬性**outer/inner cableability的屬性(如直寫模式、回寫模式)
SH1、SH0cache的共享方式cache的共享屬性配置(如non-shareable, outer/inner shareable)
TG0/TG1Granule sizeGranule size(其實(shí)就是頁面的大小,4k/16k/64k)
IPS物理地址size物理地址size,如32bit/36bit/40bit
EPD1、EPD0-TTBR_EL1/TTBR_EL0的enable和disable
TBI1、TBI0-top addr是ignore,還是用于MTE的計(jì)算
A1-ASID的選擇,是使用TTBR_EL1中的,還是使用TTBR_EL0中的
AS-ASID是使用8bit,還是使用16bit
(1)、T1SZ、T0SZ
  • T1SZ, bits [21:16] 通過TTBR1尋址的內(nèi)存區(qū)域的大小偏移量,也就是TTBR1基地址下的一級(jí)頁表的大小
  • T0SZ, bits [5:0]
(2)、ORGN1、IRGN1、ORGN0、IRGN0


其實(shí)可以總結(jié)為這樣:

(3)、SH1、SH0

SH1, bits [29:28]
SH0, bits [13:12]

其實(shí)可以總結(jié)為這樣:

Shareable的很容易理解,就是某個(gè)地址的可能被別人使用。我們?cè)诙x某個(gè)頁屬性的時(shí)候會(huì)給出。Non-Shareable就是只有自己使用。當(dāng)然,定義成Non-Shareable不表示別人不可以用。某個(gè)地址A如果在核1上映射成Shareable,核2映射成Non-Shareable,并且兩個(gè)核通過CCI400相連。那么核1在訪問A的時(shí)候,總線會(huì)去監(jiān)聽核2,而核2訪問A的時(shí)候,總線直接訪問內(nèi)存,不監(jiān)聽核1。顯然這種做法是錯(cuò)誤的。

對(duì)于Inner和Outer Shareable,有個(gè)簡(jiǎn)單的的理解,就是認(rèn)為他們都是一個(gè)東西。在最近的ARM A系列處理器上上,配置處理器RTL的時(shí)候,會(huì)選擇是不是把inner的傳輸送到ACE口上。當(dāng)存在多個(gè)處理器簇或者需要雙向一致性的GPU時(shí),就需要設(shè)成送到ACE端口。這樣,內(nèi)部的操作,無論inner shareable還是outershareable,都會(huì)經(jīng)由CCI廣播到別的ACE口上。

(4)、TG0/TG1 - Granule size

(5)、IPS

(6)、EPD1、EPD0

(7)、TBI1、TBI0

(8)、A1

(10)、AS

除了以上介紹的bit之外,剩余的bit都是特有功能使用或reserved的

二、示例展示

1、設(shè)置inner/outer cache的屬性(只寫模式/回寫模式/write allocate/No-write allocate)

如下代碼所示,設(shè)置

#define TCR_IRGN_WBWA ((UL(1) << 8) | (UL(1) << 24)) //使用TTBR0和使用TTBR1時(shí)后的inner cache的屬性設(shè)置#define TCR_ORGN_WBWA ((UL(1) << 10) | (UL(1) << 26)) //使用TTBR0和使用TTBR1時(shí)后的outer cache的屬性設(shè)置#define TCR_CACHE_FLAGS TCR_IRGN_WBWA | TCR_ORGN_WBWA // inner + outer cache的屬性值ENTRY(__cpu_setup) ....../** Set/prepare TCR and TTBR. We use 512GB (39-bit) address range for* both user and kernel.*/ldr x10, =TCR_TxSZ(VA_BITS) | TCR_CACHE_FLAGS | TCR_SMP_FLAGS | \TCR_TG_FLAGS | TCR_ASID16 | TCR_TBI0 | TCR_A1tcr_set_idmap_t0sz x10, x9......msr tcr_el1, x10ret // return to head.S ENDPROC(__cpu_setup)

屬性設(shè)置了1,也就是回寫模式、write allocate模式

總結(jié)

以上是生活随笔為你收集整理的aarch64的TCR寄存器介绍的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。