娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

《ARM Architecture Reference Manual ARMv8-A》里面有Memory層級框架圖,從中可以看出L1、L2、DRAM、Disk、MMU之間的關系,以及他們在整個存儲系統中扮演的角色。

涉及到的相關文檔有:

《ARM Architecture Reference Manual ARMv8-A》:E2 The AArch32 Application Level Memory Model和G3 The AArch32 System Level Memory Model兩個章節,從總體架構上介紹了ARMv8-A Memory系統。

《Cortex-A53 TRM》:6 Level 1 Memory System、5 Memory Management Unit、7 Level 2 Memory System三個章節介紹了MMU/L1/L2三個模塊在A53上的實現。

具體到MMU:

《MMU-500 TRM》:MMU-500技術參考手冊。

《ARM SMMUv2》:System MMU 架構規格 version 2.0。

具體到L2:

《L2C-310 TRM》:L2控制器技術參考手冊。

在Linux內核中查看L1/L2/L3緩存:


lscpu


...

L1d cache:             32K

L1i cache:             32K

L2 cache:              256K

L3 cache:              6144K

...


或者讀取節點:


cat /sys/devices/system/cpu/cpu0/cache/indexx/size

cat /sys/devices/system/cpu/cpu0/cache/indexx/level


ARM Architecture Reference Manual ARMv8 

 

ARM Corelink MMU-500 System Memory Management Unit Revision r2p4

1 Introduction

VA:Virtual Address

PA:Physical Address

IPA:Intermediate Physical Address

MMU-500是系統級的存儲管理單元,它基于自身寄存器和轉換表中的地址映射和存儲器屬性,將虛擬地址轉換成物理地址。

將這個轉換過程分為兩個階段:

  • Stage 1 - 將輸入的VA轉換成PA或者IPA輸出。

  • Stage 2 - 將IPA轉換成PA。

  • 或者結合Stage 1和Stage 2將輸入的VA->IPA->PA。

MMU-500可以將 轉換表查找結果緩存到TLB中。

MMU-500包含一下主要部件:

TBU(Translation Buffer Unit) - 包含緩存頁表的TLB,MMU-500給每個Master配置了一個TBU,專屬于Master。

TCU(Translation Control Unit) - 控制和管理地址轉換,一個MMU-500僅包含一個TCU。

Interconnect - 多TBU到TCU之間的連接。

Master可能包括GPU、Video engines、DMA Controller、LCD Controller、Network Controller等。

 

2 Functional description

2.1 About the functions

 從Figure 1-1可知,一個MMU有多個TBU和一個TCU。TBU包含TLB,主要用于緩存經常使用的地址范圍;TCU主要查找頁表。

2.2 Interfaces 

L2 Cache

摘錄A53規格書中關于L2 Cache一段屬性描述:


Optional tightly-coupled L2 cache that includes:

— Configurable L2 cache size of 128KB, 256KB, 512KB, 1MB and 2MB.---多種大小可配置

— Fixed line length of 64 bytes.------------------------------------每條Cache Line大小是64Bytes

— Physically indexed and tagged cache.

— 16-way set-associative cache structure.

— Optional ACP interface if an L2 cache is configured.

— Optional ECC protection


Cache Line可以簡單的理解為CPU Cache中的最小緩存單位。

大小為64Bytes大小的Cache Line,128KB的L2 Cache,一共有128KB/64B=2048個Cache Line。

 

那么Cache存放規則是什么呢?Fully Associative、Direct Mapped、N-Way Set Associative。

Fully Associative是全關聯的意思:如果在一個Cache集內,任何一個地址的數據都可以緩存在任何一個Cache Line里,那么我們稱這個Cache是Fully Associative。

給一個內存地址,要知道他是否存在于Cache中,就需要遍歷所有Cache Line并比較緩存內容的地址。

 

Direct Mapped給定一個內存地址,就唯一確定了一條Cache Line。以4GB內存空間,128KB L2 Cache,64B Cache Line,那么4GB/(128KB/64B)=2MB共用一條Cache Line,使用率太低。

 

N-Way Set Associative是吧一個緩存按照N個Cache Line作為一組(Set),緩存按組劃為等分。

同樣以上面32位系統中L2 Cache規格為例,低6位是Cache Line中的偏移量;128KB/16/64B=128,中間7位表示Cache組號(Set Index);剩余高19位就是內存地址的唯一ID。

給定一個內存地址可以唯一對應一個Set,對于Set中只需遍歷16個元素就可以確定對象是否在緩存中。

128KB的Cache,分成128個Set;一個Set包含16根Cache Line;每根Cache Line大小64Byte。

即在連續內存地址中每Cache Line Offset+Set Index長度8KB就會出現一個處于同一Cache Set的緩存對象,爭搶一個僅有16個空位的緩存池。

每Cache Line Offset+Set Index+16 Way=128KB才會導致一個Set內的Conflict。

 

《關于CPU Cache -- 程序猿需要知道的那些事》

《2.2 Cache的組成結構》

《CACHE的一些基本概念》

《7個示例科普CPU Cache line》

《cpu性能探究-Linux Cache機制》

《深入理解Cache》

 L2C-310在Linux

archarmmmcache-l2x0.c


  #

  # Processor Type

  #

  CONFIG_CPU_V7=y

  CONFIG_CPU_32v6K=y

  CONFIG_CPU_32v7=y

  CONFIG_CPU_ABRT_EV7=y

  CONFIG_CPU_PABRT_V7=y

  CONFIG_CPU_CACHE_V7=y

  CONFIG_CPU_CACHE_VIPT=y

  CONFIG_CPU_COPY_V6=y

  CONFIG_CPU_TLB_V7=y

  CONFIG_CPU_HAS_ASID=y

  CONFIG_CPU_CP15=y

  CONFIG_CPU_CP15_MMU=y


 


#

# Processor Features

#

CONFIG_OUTER_CACHE=y

CONFIG_OUTER_CACHE_SYNC=y

CONFIG_MIGHT_HAVE_CACHE_L2X0=y

CONFIG_CACHE_L2X0=y

CONFIG_CACHE_PL310=y

CONFIG_ARM_L1_CACHE_SHIFT_6=y

CONFIG_ARM_L1_CACHE_SHIFT=6

CONFIG_ARM_DMA_MEM_BUFFERABLE=y

CONFIG_ARM_NR_BANKS=8

CONFIG_CPU_HAS_PMU=y

CONFIG_MULTI_IRQ_HANDLER=y

# CONFIG_ARM_ERRATA_430973 is not set

# CONFIG_ARM_ERRATA_458693 is not set

# CONFIG_ARM_ERRATA_460075 is not set

CONFIG_PL310_ERRATA_588369=y

CONFIG_ARM_ERRATA_720789=y

CONFIG_PL310_ERRATA_727915=y

CONFIG_ARM_ERRATA_743622=y

CONFIG_ARM_ERRATA_751472=y

CONFIG_PL310_ERRATA_753970=y

CONFIG_ARM_ERRATA_754322=y

CONFIG_PL310_ERRATA_769419=y

# CONFIG_ARM_ERRATA_775420 is not set

# CONFIG_FIQ_DEBUGGER is not set


在setup_processor中將cache相關操作函數賦給cpu_cache,同時還包括cpu_tld和cpu_user。


start_kernel-->

    setup_arch-->

        setup_processor-->

static void __init setup_processor(void)

{

...

    list = lookup_processor_type(read_cpuid_id());

...

    processor = *list->proc;

    cpu_tlb = *list->tlb;

    cpu_user = *list->user;

    cpu_cache = *list->cache;

...

}

 

 內核對這些函數的使用又進行了封裝,同時對應底層匯編(以v7為例)。在arch/arm/mm/proc-v7.S中實現了匯編函數。


extern struct cpu_cache_fns cpu_cache;


#define __cpuc_flush_icache_all        cpu_cache.flush_icache_all

#define __cpuc_flush_kern_all        cpu_cache.flush_kern_all

#define __cpuc_flush_user_all        cpu_cache.flush_user_all

#define __cpuc_flush_user_range        cpu_cache.flush_user_range

#define __cpuc_coherent_kern_range    cpu_cache.coherent_kern_range

#define __cpuc_coherent_user_range    cpu_cache.coherent_user_range

#define __cpuc_flush_dcache_area    cpu_cache.flush_kern_dcache_area


/*

 * These are private to the dma-mapping API.  Do not use directly.

 * Their sole purpose is to ensure that data held in the cache

 * is visible to DMA, or data written by DMA to system memory is

 * visible to the CPU.

 */

#define dmac_map_area            cpu_cache.dma_map_area

#define dmac_unmap_area            cpu_cache.dma_unmap_area

#define dmac_flush_range        cpu_cache.dma_flush_range

關于TCM

TCM(Tighyly Coupled Memory,緊耦合內存)是一個固定大小的RAM,緊密地耦合至處理器內核,提供與cache相當的性能。

相比于cache的有點是,程序代碼可以精確地控制什么函數或什么代碼放在哪兒。當然TCM永遠不會被踢出主存儲器,他會有一個用戶預設性能,而不是cache那樣是統計特性的提高。

TCM對于以下幾種情況的代碼是非常有用、也是需要的:可預見的實時處理(中斷處理)、時間可預見(加密算法)、避免cache分析(加密算法)、或者只是要求高性能的代碼(編解碼功能)。

隨著cache大小的增加以及總線性能的規模,TCM將會變得越來越不重要,但是他提供了一個讓你權衡的機會。

 

如何使用TCM?

再支持TCM的處理上,包含頭文件#include

使用__tcmdata、__tcmconst、__tcmfunc、__tcmlocalfunc修飾符,將變量、函數放到特定的tcm段中。

還可以使用tcm_alloc/tcm_free申請釋放內存。

延伸閱讀:

《對ARM緊致內存TCM的理解》- 關于TCM的介紹,以及和Cache相比的優劣。

《內核中tcm(arm)與sram代碼》- 如何使用TCM。

關鍵字:ARM  Memory  MMU 引用地址:閱讀ARM Memory(L1/L2/MMU)筆記

上一篇:S3c2410裸板程序入門---單按鍵(一)
下一篇:在ARM64位開發板上兼容ARM32位的可執行程序

推薦閱讀

眾所周知,AR眼鏡的顯示屏必須足夠輕才能讓用戶佩戴很長時間,目前市面上合適的技術有硅基液晶(LCoS)、激光投影、AMOLED,但據Digitimes Research報道,微型LED才是最適合AR可穿戴設備的技術。自Google Glass發布以來,LCoS就一直是AR眼鏡中應用的主要技術,因為LCoS比數字光處理器技術(DLP)更易精簡結構,耗能也更少。微軟同樣也選擇了LCoS技術。英...
根據推特用戶@uzzi38的消息,一款聯想IdeaPad S540規格清單上列出了英偉達尚未發布的MX 350獨顯。數據顯示,這份清單發布于2019年12月,介紹的是聯想IdeaPad S540,國內就是聯想小新Pro 13。新款筆記本搭載了十代酷睿Comet Lake處理器,顯卡可選MX 250和MX 350。這是英偉達MX 350的首次曝光,目前尚不清楚是否會采用圖靈架構。MX 350仍搭載了2GB...
小米11已經確定將在12月28日19點30分發布,Slogan“輕裝上陣”。  此前,外界的關注點多圍繞小米11標準版和小米11 Pro,據傳兩者的區別在于屏幕分辨率、背部攝像頭多寡、快充功率等方面。  不過,知名分析機構TrendForce在一篇探討小米11的報道中指出,有爆料稱小米11發布會上可能推出小米11超大杯。  既然是“超大杯”,自然不同凡響,該...
據The Elec報道,LG顯示(LG Display)將加入三星顯示(Samsung Display),共同為蘋果明年推出的iPhone 14系列供應LTPO TFT OLED面板(注:LTPO指低溫多晶氧化物;TFT指薄膜晶體管)。具體來說,LG將供應6.7英寸的iPhone 14 Pro Max部分面板,而三星則依舊占據Pro Max面板的大部分份額,且將獨家供應6.1英寸iPhone 14 Pro的LTPO TFT OLED面板...

史海拾趣

問答坊 | AI 解惑

充電電池簡介 電池的主要性能指標

1.安全性能 影響最大的是爆炸和漏液,主要與電池的內壓、結構和工藝設計有關(比如安全閥失效、鋰離子電池沒有保護電路等)。   2.容量 按照IEC標準和國標規定,鎳氫和鎳鎘電池是指在25±5℃的條件下,以0.1C充電16小時,以0.2C放電 ...…

查看全部問答∨

色環電阻識別

給大家找的好東東,希望都成高手!…

查看全部問答∨

關于單片機端口的問題

有人說單片機在驅動led燈時候,不管程序如何控制都要在單片機端口上(不只是P0口)加上下拉電阻,上電復位到程序運行總是有間隔的,如果不加電阻在這段時間內會在IO口上產生一個沖擊的。 從來沒考慮過這個問題,只是在P0口和在驅動三極管的時候再 ...…

查看全部問答∨

dsp與DA

請各位高手推薦幾本關于DSP DA轉換方面的書,不勝感激…

查看全部問答∨

有一個主程序是這樣的,幫忙看看

大家好: 主程序如下: main: nop nop nop ;-----------------開始判斷鍵值 ;main_loop01:cjne a,#1,main_loop02 ljmp main 這樣是不是說一直主程序在main 函數里循環,不會跳到下面的程序段里?還有中間的;main_loop01:cjne a,#1,main_lo ...…

查看全部問答∨

做wince開發 多掙多少 薪水啊 ?

正在學wince呢,有人 推薦我學 ucos,迷惑了,想問大家一下,呵呵,別笑我, 做wince開發 都掙多少 薪水啊 ?…

查看全部問答∨

急解:Bsp問題!!! 

在Manage   Catalog   Features導入.cec,但在New   Platform   Wizard中沒有見到相關的BSPs,膽在CEC Editor里可以看到相關的信息;請問這是什么問題,應如何解決?…

查看全部問答∨

STM8L152C6除了I0寄存器,其他寄存器都不能設置

各位大俠  我用的STVD編譯器  為什么只有io相關寄存器可以設置其他寄存器都不可以設置呢??比如執行完 TIM2_CR1 = 0x01; 后 查看寄存器 TIM2_CR1 的值依然是0     用的是STM8L152C6 單片機   還有S ...…

查看全部問答∨

學習M3系列單片機必讀資料

各位學習M3系列單片機的同學必讀的資料,希望大家頂起~…

查看全部問答∨
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 小金县| 垫江县| 马尔康县| 吉隆县| 蒙山县| 磐安县| 肥西县| 荥经县| 积石山| 会泽县| 平顺县| 婺源县| 尼木县| 通化县| 长沙县| 砚山县| 昌江| 湖州市| 桂阳县| 凤阳县| 竹山县| 沐川县| 岳池县| 西林县| 扶绥县| 沂南县| 湛江市| 德阳市| 青铜峡市| 乌什县| 同心县| 聂拉木县| 浦北县| 肇州县| 徐州市| 介休市| 同心县| 巨野县| 庆安县| 潼关县| 泸定县|