带 cache 的内核简要介绍

53
1 TM T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D 带 Cache 带带带带带带带

Upload: robert-pickett

Post on 13-Mar-2016

168 views

Category:

Documents


7 download

DESCRIPTION

带 Cache 的内核简要介绍. 带 Cache 的 ARM 宏单元举例. JTAG 及非 AMBA 信号. ARM 内核. CP15. 控制逻辑. 地址. MMU 或 MPU. 写缓冲. AMBA 总线 接口. AMBA 接口. 数据. 地址. 数据写. 数据读. Cache. 议程. Cache、 同步 和写缓冲介绍 存储器保护单元 内存管理单元 紧耦合存储器 带 Cache 的 ARM 处理器. 什么是 cache?. 位于处理器中的少量高速缓冲存储器, 保存最近被访问的存储空间内容的备份 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 带 Cache 的内核简要介绍

1TMT H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

带 Cache 的内核简要介绍

Page 2: 带 Cache 的内核简要介绍

2TM 2带 Cache 处理器初步( 91v07 )

带 Cache 的 ARM 宏单元举例

Cache

ARM内核地址

地址 写缓冲MMU或MPU

数据读数据写

数据

控制逻辑CP15

AMBA总线接口

JTAG 及非 AMBA 信号

AMBA接口

Page 3: 带 Cache 的内核简要介绍

3TM 3带 Cache 处理器初步( 91v07 )

议程

Cache 、同步 和写缓冲介绍 存储器保护单元 内存管理单元 紧耦合存储器 带 Cache 的 ARM 处理器

Page 4: 带 Cache 的内核简要介绍

4TM 4带 Cache 处理器初步( 91v07 )

外部存储器CPU

Cache 地址

数据总线接口

什么是 cache?

位于处理器中的少量高速缓冲存储器 , 保存最近被访问的存储空间内容的备份

哪些存储空间需要读入到 cache 中,要通过 MMU 或 MPU 来控制 依赖于内存的重使用 仅用来改善速度较慢的存储器或总线宽度较窄的存储器的性能 降低对总线宽度的要求 减少功耗

Page 5: 带 Cache 的内核简要介绍

5TM 5带 Cache 处理器初步( 91v07 )

Cache 的用法 数据以每次传送一行的方式复制到 cache 中

每个 cache 行包含连续的数据 Cache 行按其自然的行边界尺寸分配 Cache 中的数据一旦被获取后,立即对内核有效

这一处理就是大家所知的数据流动 在一个 cache 读操作不命中后,将激发 cache 行内容的填充

但新数据应放在 cache 的什么位置 ? ARM 处理器支持以下置换策略中的一个或多个 :

随机 , 循环轮换

轮换指针指向下一个要填充的 cache 行 已经使用过的行将被收回和替换

对回写数据 cache 而言 , 任何改过的数据都要写到存储器中

Page 6: 带 Cache 的内核简要介绍

6TM 6带 Cache 处理器初步( 91v07 )

结合性

简单 cache ,采用直接映射策略 一个特殊的存储器数据项被存放在 cache 的某个特定位置。 相同 cache 地址域的数据项将竞争这一位置。

实施简单,执行快捷 块结合 cache ,减少位置竞争

一个特殊的存储器数据项被存放在 cache 的许多位置 如果一个特殊的存储器数据项被存放在 cache 中的‘ n’ 个位置,那么可以说

cache 是 n 维的 实施较复杂,需要更多的比较硬件

Page 7: 带 Cache 的内核简要介绍

7TM 7带 Cache 处理器初步( 91v07 )

主存储器0x00000x00100x00200x00300x00400x00500x00600x00700x00800x0090

Cache

直接映射 Cache

00..................................01 10 010x0064

00

tag index word地址

tag ram

数据=

Page 8: 带 Cache 的内核简要介绍

8TM 8带 Cache 处理器初步( 91v07 )

2- 维块结合 Cache主存储器

0x00000x00100x00200x00300x00400x00500x00600x00700x00800x0090

Way 0

Way 1

Set 0

2-Way, 4 Sets

?

数据

=

tag

index

=

tag

index

Way 0 Way 1

目标计数器

替换策略 : 随机 循环 最近最少使用 (LRU)†

† :当前 ARM 处理器未用

Page 9: 带 Cache 的内核简要介绍

9TM 9带 Cache 处理器初步( 91v07 )

若干定义 Line: 行, cache 的最小可装载单元 – 任何情况下都是存储器中一个连续的字块。

Tag: 标签,存放在 cache 中的存储器地址的一部分,用来识别定位在那里的特定的物理地址。 Set: 块,一组行,用来保持来自特定存储器空间的数据。

Way: 维,一个块所含行的数量,就是 cache 的维数。

Index: 索引,存储器地址的一部分,它决定可以存储 cache 行的块。

Page 10: 带 Cache 的内核简要介绍

10TM 10带 Cache 处理器初步( 91v07 )

4- 维块结合 CacheD

ecod

erD

ecod

erD

ecod

er

31 10 9 5 4 2 1 0

地址

Cache 行5

3

注 :每一个地址索引映射到一个 cache 行,该行可存于 4 维的任意一维中( 4 维结合)

存于 TAG 中的地址 (22 位 ) Index Word Unused

Data

way 0

TAGLine 0Line 1

Line 30Line 31

这里是一个 4k cache 的例子: 4 waysx 32 lines (sets)x 8 words

= 4kb cache

Dec

oder

v d0d1

v- 有效位 d0,d1 – 脏位

01234567 d0 d1

Page 11: 带 Cache 的内核简要介绍

11TM 11带 Cache 处理器初步( 91v07 )

01234567 d0 d1

64- 维块结合 Cache

31 7 6 5 4 2 1 0

地址

Cache line

23

注 :每个地址索引映射到单一的块,每个块可以存储 64 不同的地址标签 (64 ways holding 4 lines).

Dec

oder

存于 TAG 中的地址 (25 位 ) Index Word Unused

这里是 ARM922T 的例子 : 4 setsx 64 lines (ways)x 8 words

= 8kb cache用内容设定地址的存储器 (CAM)

Data

Set 0

TAGLine 0Line 1

Line 62Line 63

Page 12: 带 Cache 的内核简要介绍

12TM 12带 Cache 处理器初步( 91v07 )

Cache 闭锁 (1)

部分 cache 可能闭锁以避免被清除 其间隔尺度随着内核的不同而变化

可能在需要保证实时性能时使用 需要一个短的子程序来控制行填充

提供了例子程序 目标计数器范围受限 (cp15 之 r9)

闭锁行可免于替换 仍可被‘冲洗’ - 那么闭锁机制肯定被清除了

Page 13: 带 Cache 的内核简要介绍

13TM 13带 Cache 处理器初步( 91v07 )

这是一个 4 维结合的 cache ,每维包含 32 行 ( 块 ). 单一的目标计数器选择将要替换的维 . 闭锁固定了计数器的基值所以该值以下的通道完全免于替换 . 闭锁具有一维的间隔尺寸 (1/4 的 cache 大小 ).

Cache 闭锁 (2)

VictimCounter

Data

way 2

TAGLine 0Line 1

Line 30Line 31

闭锁行

Data

way 0

TAG

Line 1Line 0

Line 30Line 31

Data

way 1

TAG

Line 1Line 0

Line 30Line 31

Data

way 3

TAGLine 0Line 1

Line 30Line 31

Page 14: 带 Cache 的内核简要介绍

14TM 14带 Cache 处理器初步( 91v07 )

这是一个 64 维 ,4 个块的结合 cache. 单一的目标计数器选择将要替换的维 ( 每个块中相同数字的行 ). 闭锁固定了计数器的基值所以该值以下的块完全免于替换 . 闭锁具有一行的间隔尺寸 (1/64 的 cache 大小 ).

VictimCounter

闭锁行 ( 通道 )

Data

set 0

TAG

Line 62Line 63

Line 0

Line 1

Data

set 1

TAG

Line 62Line 63

Line 0

Line 1

Data

set 2

TAG

Line 62Line 63

Line 0

Line 1

Data

set 3

TAG

Line 62Line 63

Line 0

Line 1

Cache 闭锁 (3)

Page 15: 带 Cache 的内核简要介绍

15TM 15带 Cache 处理器初步( 91v07 )

Cache Flushing

保存在 cache 中的信息将优先与存储器相联系。但并不总是希望如此 如果使用了自修改的代码 如果 MPU 或 MMU 被重新编程

因此需要一种机制来“刷新” cache 当 cache 被刷新时 , cache 行将被标记为无效,然后被重新使用

另外,数据 cache 可能含有‘脏数据’ ,所以要通过分别操作将数据写回存储器 Cache 清理和刷新由 CP15 指令来实现

Page 16: 带 Cache 的内核简要介绍

16TM 16带 Cache 处理器初步( 91v07 )

时钟 固化宏单元内核(硬核)

硬核 ( 例如 ARM920T, ARM940T) 有两个时钟输入,提供了灵活的时钟配置方法 BCLK

AMBA 总线时钟 , 为所有的外部总线提供时钟 只有在配置为‘快速总线’时才用于内核

FCLK 当配置为‘同步’或‘异步’时钟模式,没有外部总线活动时为内核提供时钟

可合成内核(软核) 可综合内核 ( 例如 . ARM946E-S, ARM966E-S, ARM926EJ-S)只有单个时钟输入

单个时钟输入作为 CLK 信号 HCLKEN 是第二个输入,用来生成总线时钟输出 (HCLK) HCLK 必须能被 CLK整除

Page 17: 带 Cache 的内核简要介绍

17TM 17带 Cache 处理器初步( 91v07 )

同步模式( 固化宏单元 )

ignored

BCLK

FCLK

FastBus

内核及外部总线由 BCLK 同步 .

BCLK

FCLK

Asynchronous FCLK 的频率必须比 BCLK. 高 . 二者相位关系没有限制 . ASB操作需 BIU与 BCLK 同步 . 最大 1.5 个 BCLK 周期的同步延迟 .

BCLK

FCLK

Synchronous FCLK 的频率必须比 BCLK.高 BCLK 只可以在 FCLK 为高期间改变 . ASB操作需 BIU与 BCLK 同步 . 最大 1 个 BCLK 周期的同步延迟 .

Page 18: 带 Cache 的内核简要介绍

18TM 18带 Cache 处理器初步( 91v07 )

写缓冲器 (1)

用于消除内核和存储器速度不匹配的影响 数据进入缓冲器时是按内核的速度 数据写到存储器时按总线的速度

存储器访问总是以正确的顺序出现 在非 cache 读 , 非缓冲写和 cache 行填充时,写缓冲总是首先被排空 有一个特定的排空写缓冲操作

地址寄存器

数据寄存器内部数据总线

a0

d1

a1a2a3

d2d3d4d5d6d7

内核时钟 总线时钟

内部地址总线

总线接口单元d0

Page 19: 带 Cache 的内核简要介绍

19TM 19带 Cache 处理器初步( 91v07 )

写缓冲器 (2)

写操作出现以下情况时处理器将停顿 : 写缓冲器满 写缓冲器被禁用 写到不可用作缓冲的区域

在写非缓冲区之前写缓冲器将被排空 如果写缓冲在软件的控制下被排空 ( 通过 CP15), 处理器将停止执行 在写缓冲的时候不能产生异常中断

异常中断将被忽略

Page 20: 带 Cache 的内核简要介绍

20TM 20带 Cache 处理器初步( 91v07 )

CPU

Cache

Write Buffer

Access Mode 0 Non cacheable, non bufferable0

GCd GBd

0 Non cacheable, bufferable11 WT, Write Through01 WB, Write Back1

ExternalMemory

Cache 写策略

Write Back: If location is within the cache, only the cache is updated

CPU

Cache

Write Buffer

Access Mode 0 Non cacheable, non bufferable0

GCd GBd

0 Non cacheable, bufferable11 WT, Write Through01 WB, Write Back1

ExternalMemory

CPU

Cache

Write Buffer

Access Mode 0 Non cacheable, non bufferable0

GCd GBd

0 Non cacheable, bufferable11 WT, Write Through01 WB, Write Back1

ExternalMemory

Write Through: If location is within the cache, the cache is updated. Write is also sent to memory via the Write Buffer

访问模式 0 非 cache, 非缓冲0

GCd GBd

0 非 cache, 可缓冲11 WT, 直写01 WB, 回写1

直写 : 如果位置在 cache之内 , cache 将被更新 . 数据也通过写缓冲送至存储器 .

回写 : 如果位置在 cache之内 ,只有 cache 被更新 .

注 : 如果数据位置不在 cache之内 , 数据将被直接写到存储器中。如果存储器是可 cache 或可缓冲的,写缓冲将被使用 。

CPU

Cache

写缓冲

外部存储器wb

wt

Page 21: 带 Cache 的内核简要介绍

21TM 21带 Cache 处理器初步( 91v07 )

存储器管理

存储器保护单元 (MPU) 将存储空间分割为带有可编程特权的独立的区域 设置简单 节省功耗和芯片面积

不支持虚拟内存 无可用于页表的内存

ARM940T 是一例带有 MPU 的 ARM 内核 内存管理单元 (MMU) 提供更多灵活的动态的存储器控制,连同更强大的特权配置

设置复杂 通过页表支持虚拟内存

ARM920T 是一例带有 MMU 的 ARM 内核

Page 22: 带 Cache 的内核简要介绍

22TM 22带 Cache 处理器初步( 91v07 )

编程模式 内核通过写 CP15 的寄存器来配置

cache, 保护单元 , 及其他系统操作象大端或小端模式配置 .

定义在 CP15 中的寄存器只能用 MCR 和 MRC 指令访问 . MCR/MRC{cond} p15,opcode_1,rd,cn,cm,opcode_2

p15 – 指定协处理器 15 opcode_1 – 总是为 0 rd - ARM 源或目的寄存器 cn - CP15 主寄存器 cm – 附属寄存器名 opcode_2 - 可选的 3 比特数用来指定附加信息

其他协处理器指令 (CDP,LDC,STC) 或在非特权模式使用 MCR/MRC 访问CP15 将导致未定义指令异常 .

Page 23: 带 Cache 的内核简要介绍

23TM 23带 Cache 处理器初步( 91v07 )

议程

Cache、同步 和写缓冲介绍 存储器保护单元

存储器管理单元紧耦合存储器ARM 的带 Cache 处理器

Page 24: 带 Cache 的内核简要介绍

24TM 24带 Cache 处理器初步( 91v07 )

保护单元 用于分割存储器

区块可以具有单独的 cache属性 每个区块可以具有不同的访问设置,例如仅为特权模式 区块的大小和基地址是可选的 可以是分开的数据区和指令区(哈佛结构)

在保护单元使能之前至少有一个数据存储区和一个指令存储区被定义 区间的大小是可变的,典型值是 4KB 到 4GB

区块的边界值必须等于其大小的整数倍 保护单元必须在 cache 使能之前有效

Page 25: 带 Cache 的内核简要介绍

25TM 25带 Cache 处理器初步( 91v07 )

0x25FFFFFF

0x24000000

0x1FFFFFFF

0x10000000

0x0003FFFF

0x00000000

Background

SRAM

Peripherals

Flash

指令区域图

读写不可 cache 不可缓冲Background

SRAM

Flash

只读可 Cache

只读 可 Cache

只读可 Cache

读写 可 Cache 可缓冲

数据区域图保护区域举例

注 : 指令区必须有定义为允许文字池访问的相应数据区 . 可以设定可重叠的背景区( Background ) .

Page 26: 带 Cache 的内核简要介绍

26TM 26带 Cache 处理器初步( 91v07 )

MPU 配置步骤 参照你的目标系统定义和使能保护寄存器

CP15之 c6

为每个存储区域设定可用于 cache 或可用于缓冲的属性 CP15 之 c2 和 c3

为每个存储区域设定访问许可 CP15 之 c5

使能 cache, 设置时钟同步模式,并使能 MPU CP15 之 c1

其他内核缺省值,象数据存放模式,向量表的位置等都通过 c1 设置

Page 27: 带 Cache 的内核简要介绍

27TM 27带 Cache 处理器初步( 91v07 )

议程

Cache、同步 和写缓冲介绍存储器保护单元

存储器管理单元紧耦合存储器ARM 的带 Cache 处理器

Page 28: 带 Cache 的内核简要介绍

28TM 28带 Cache 处理器初步( 91v07 )

什么是 MMU

内存管理单元 控制存储器的访问权限 将虚拟地址转换为物理地址

MMU 的组成 后备变换缓冲器 (TLB)

最近用于页变换的 cache 页表浮动硬件逻辑

更新 TLB 访问控制逻辑

如果 MMU 被禁用了 外部地址总线将直接输出虚拟地址

Page 29: 带 Cache 的内核简要介绍

29TM 29带 Cache 处理器初步( 91v07 )

虚拟地址到物理地址的映射

保护 & 中止

虚拟存储器 物理存储器 变换和校验机制 .

Process C

Process B

Process A

Manager

Process D MMU

RAM

RAMVRAM

ROMRAM

RAMRAM

变换表

I TLB D

TLB

Page 30: 带 Cache 的内核简要介绍

30TM 30带 Cache 处理器初步( 91v07 )

为什么要用 MMU?

保护单元提供的是粗略的 , 通常是静态的存储模式 不能分配额外的存储空间

MMU 可以“动态地”重新定位存储空间 对存储器“重新分配”使其纳入有效的管理

将变换过程与系统的其他部分隔离 生成所需的页表虚拟存储系统

Page 31: 带 Cache 的内核简要介绍

31TM 31带 Cache 处理器初步( 91v07 )

TLB 和变换表 TLB 是最近用于从虚拟地址 到 物理地址变换的 cache

为大多数存储器访问提供变换和访问权限的信息 若 TLB 没有命中,页表浮动硬件将从存于物理存储器中的变换表重新找回,然

后 TLB 被更新 如果 TLB 满了 , 有的值将因循环编排的方式被覆盖

变换表驻留在物理存储器中 第一级页表包含 4096 个变换,通过虚拟地址的位 31:20 索引

变换项包含一个指针,指向 1MB 的段物理空间,连同其属性信息 ... 指向另一页表基地址的指针,包含了许多指向较少页物理地址指针

好的间隔尺度要求更多的页表,因此也需要更多的物理存储空间 !

Page 32: 带 Cache 的内核简要介绍

32TM 32带 Cache 处理器初步( 91v07 )

检查 TLB 是否包含该虚拟地址

虚拟地址

得到物理地址 页表浮动

得到物理地址

是 否

更新 TLB

MMU 转换过程 变换过程由硬件完成,对用户是透明的

变换表由软件产生

Page 33: 带 Cache 的内核简要介绍

33TM 33带 Cache 处理器初步( 91v07 )

第一级描述 第一级描述是转换表中的一个条目,它可以是:

一个错误 一个段描述 一个粗略的或细致的页描述

段描述指针指向 1Mb 的段物理空间,包括访问权限和可 cache 和可缓冲的控制位 如果第一级取返回的是一个页描述,这将提供第二级描述表的基地址

粗略页表错误

详细页表段

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

段基地址 1AP 域选择 C B 1 0

粗略的第二级描述基地址 1域选择 0 1

详细的第二级描述基地址 1域选择 1 1

0 0

Page 34: 带 Cache 的内核简要介绍

34TM 34带 Cache 处理器初步( 91v07 )

第二级描述 第二级描述保存的是大页,小页的基地址

位 [1:0] 代表访问类别 微页只支持详细页表 加入微页是为了改善存储器以用于更高级的文件分段系统

大页错误

微页小页

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

大页基地址 0 1

0 0

AP3 AP2 AP1 AP0 C B

小页基地址 C B 1 0AP3 AP2 AP1 AP0

微页基地址 1 1C BAP

Page 35: 带 Cache 的内核简要介绍

35TM 35带 Cache 处理器初步( 91v07 )

第一级变换页表虚拟地址 第一级转换页表

C BDomain SelectorAP0x000 1 1 0

C BDomain SelectorAP0x002 1 1 0

C BDomain SelectorAP0xFFC 1 1 0

C BDomain SelectorAP0xFFF 1 1 0

C BDomain SelectorAP0xFFF 1 1 0

C BDomain SelectorAP0xFFF 1 1 0

C BDomain SelectorAP0xFFF 1 1 0

0x002 000000x003 000000x004 00000

0x001 00000

0x005 000000x006 00000

0xFFF 000000xFFE 000000xFFD 000000xFFC 00000

物理地址 4096 项 1 MB 段 1 MB 段

错误

0x001 00000

0x003 000000x004 00000

0x002 00000

0x005 000000x006 00000

0xFFF 000000xFFE 000000xFFD 000000xFFC 00000

0x000 00000 0x000 00000

0 0

0 0

Fine Table Base 1 1 1Domain Selector

Coarse Table Base 1 0 1Domain Selector

粗略第二级转换页表细致第二级转换页表

Page 36: 带 Cache 的内核简要介绍

36TM 36带 Cache 处理器初步( 91v07 )

第一级地址变换

虚拟地址

第一级页表项

物理地址 段索引

段基地址 1AP 域 C B 1 0

段基地址

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

段索引索引进入第一级页表

+TTB

Page 37: 带 Cache 的内核简要介绍

37TM 37带 Cache 处理器初步( 91v07 )

第二级变换页表第二级转换页表

C BAP3Large Page Base 0 1AP2 AP1 AP0

0 0

C BAP3Small Page Base 1 0AP2 AP1 AP0

1 1

C BTiny Page Base 1 1AP

C BAP3Small Page Base 1 0AP2 AP1 AP0

C BAP3Large Page Base 0 1AP2 AP1 AP0

0 0

粗略页表 - 256 项

细致页表 - 1024 项微页

1024页1kB

大页

16页

64kB

大页

16 页

64kB

小页

256 页4kB

小页

256页4kB

错误

Page 38: 带 Cache 的内核简要介绍

38TM 38带 Cache 处理器初步( 91v07 )

第二级地址变换 虚拟地址

物理地址

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

页索引索引进入第一级页表

第一级页表项

第二级页表项

页索引大页 /小页 /微页基地址

索引进入第二级页表

大页 /小页 /微页基地址 x xC BAP

粗略 /细致第二级描述基地址 1页 x 1

+TTB

+

Page 39: 带 Cache 的内核简要介绍

39TM 39带 Cache 处理器初步( 91v07 )

D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0

31 0

域 MMU 访问主要由域控制 所有定义的存储器区域都有一个相关联的域

域被定义为 2 比特的读写区 可以定义 16 个域

域通常允许 3 个状态 客户态 – 服从段或页描述中的访问权限 管理态 – 忽略段或页描述中的访问权限

所以无错误产生 无读写态 – 任何访问都将产生一个域错误

可以通过简单的协处理器写操作修改域的读写区

Page 40: 带 Cache 的内核简要介绍

40TM 40带 Cache 处理器初步( 91v07 )

Process ID SBZ

31 25 24 0

CP15 C13 – 进程 ID 寄存器 用于快速的文本切换 (FCSE) 进程 ID 可以取代虚拟地址的位 [31:25]

如果 CP15 之 R13 是 0, VA 位 [31:25] 未修改 有效地允许每个进程运行在相同的虚拟地址空间

复未时为 0 MCR/MRC p15,0,Rd,c13,c0,0

读进程 ID寄存器,返回进程标识 写操作将更新进程标识

Page 41: 带 Cache 的内核简要介绍

41TM 41带 Cache 处理器初步( 91v07 )

利用进程 ID 寄存器生成地址

VA[24:0]

进程 ID

OS进程管理

VA[31:25]

判决逻辑

来自内核的指令地址VA[31:0]

MVA[31:0]修改过的地址送入 Cache 和 MMU

Page 42: 带 Cache 的内核简要介绍

42TM 42带 Cache 处理器初步( 91v07 )

进程 ID – 映射举例

4 GB

32 MB

来自内核的虚拟地址 (VA)

MMU虚拟地址 (MVA)

4 GB

32 MB

0 MB

进程 ID

如果 ( 0 VA < 32 MB ) 则 MVA = (32MB Process ID) + VA

P0 P1 P2 P3 P4 P31P30

0 MB

Page 43: 带 Cache 的内核简要介绍

43TM 43带 Cache 处理器初步( 91v07 )

MMU 配置步骤 在存储器中构造转换页表,定义所需的从虚拟地址到物理地址转换的初始值

转换页表项包括可 cache 和可缓冲的属性 也包括访问权限

设置变换页表基地址 CP15 之 c2

使能 cache, 设置时钟同步模式并使能 MMU CP15 之 c1

其他内核缺省配置如存储模式和向量地址页在这里设置

Page 44: 带 Cache 的内核简要介绍

44TM 44带 Cache 处理器初步( 91v07 )

议程

Cache、同步 和写缓冲介绍存储器保护单元存储器管理单元

紧耦合内存ARM 的带 Cache 处理器

Page 45: 带 Cache 的内核简要介绍

45TM 45带 Cache 处理器初步( 91v07 )

什么是紧耦合内存 ?

取代 cache 的一种选择,当其附在速度较慢的外部存储器上时,允许提供高性能的读写操作 快速存储器 , 紧靠微处理器

提供高速性能,而不访问系统总线 与等量的 cache 相比,在芯片尺寸上付出的代价较小

在存储器映射中的位置是固定的 代码和数据执行前将被复制到此

实时性能能够被准确预测

Page 46: 带 Cache 的内核简要介绍

46TM 46带 Cache 处理器初步( 91v07 )

ARM966E-S 存储器映射

0x00000000

TCM混叠

64MB Instruction Memory

64MBData Memory0x04000000

0x08000000

128MBAHB Buffered

256MBAHB Unbuffered

0x10000000

0xFFFFFFFF

256MBAHB Unbuffered

Instruction Memory 64KB

Instruction Alias 1 64KB

Data Alias 204732KB

Instruction Alias 102364KB

Data Memory 32KB

Data Alias 132KB

0x00000000

0x00010000

0x04000000

0x04008000

0x07FFFFFF

0x03FF0000

0x07FF8000

物理存储区图

Page 47: 带 Cache 的内核简要介绍

47TM 47带 Cache 处理器初步( 91v07 )

ARM946E-S 存储器映射TCM 存储器映射内核 TCM 存储器

指令 TCM 的基地址总是 0x0 数据 TCM 的基地址是其大小的整数倍 TCM 的大小可以指定

如果大于其实际大小 , 将发生TCM 混淆现象

如果小于其实际大小 , 某些存储空间将不会出现 随后可以放置在更好的地址

使能后, TCM 不可以重叠 1/2 Size1/2 Size

0-1024 KBTCM

0-1024 KBTCM

0-1024 KBTCM (Alias 1)

0-1024 KBTCM

0-1024 KBTCM (Alias 1)

0-1024 KBTCM

0-1024 KBTCM

1/2 Size1/2 Size

0-1024 KBTCM

0-1024 KBTCM

0-1024 KBTCM (Alias 1)

0-1024 KBTCM

0-1024 KBTCM (Alias 1)

0-1024 KBTCM

Page 48: 带 Cache 的内核简要介绍

48TM 48带 Cache 处理器初步( 91v07 )

议程

Cache、同步 和写缓冲介绍存储器保护单元存储器管理单元紧耦合内存

ARM 的带 Cache 处理器

Page 49: 带 Cache 的内核简要介绍

49TM 49带 Cache 处理器初步( 91v07 )

命名约定 ARMx1z (e.g. ARM710T) 表示 cache 和全MMU

ARMx2z (e.g. ARM720T) cache, MMU 及 进程 ID 支持 ARMx4z (e.g. ARM740T) cache 和保护单元 ARMx6z (e.g. ARM966E-S) 写缓冲但无 cache

ARMxy6 (e.g. ARM946E-S) 紧耦合 SRAM

Page 50: 带 Cache 的内核简要介绍

50TM 50带 Cache 处理器初步( 91v07 )

ARM 的带 Cache 处理器 ARM10 系列 - ARM1020E

ARM9E-S 系列 - ARM926EJ-S, ARM946E-S, ARM966E-S

ARM9TDMI 系列 - ARM920T, ARM922T, ARM940T

ARM7TDMI 系列 - ARM710T, ARM720T, ARM740T

StrongARM 和 XScale 系列 更早的 ARM 处理器 - ARM710a, ARM610 等 .

Page 51: 带 Cache 的内核简要介绍

51TM 51带 Cache 处理器初步( 91v07 )

TM

ARM Cached 内核一览720T 740T 920T 940T SA110 926E 946E 966E 1020E XScale

Architecture Von Neuman Von Neuman Harvard Harvard Harvard Harvard Harvard Harvard Harvard Harvard

Cache 8K Unified4 words/line

8K Unified4 words/line

16K Instr16K Data8 Words/Line

4K Instr4K Data4 Words/Line

16K Instr16K Data4 Words/Line

4-128K Instr4-128K Data8 Words/Line

0-1024K Instr0-1024K Data8 Words/Line

None 16K Instr16K Data8 Words/Line

32K Instr32K Data8 Words/Line

Set Associativity 4 way 4 way 64 way 64 way 32 way 4 way 4 way NA 64 way 32 way

Tightly CoupledSSRAM

No No No No No Yes0-1024K Instr0-1024K Data

Yes0-1024K Instr0-1024K Data

Yes0-64M Instr0-64M Data

No No

Replacement Random Random Random/Round Robin

Random Round Robin Random/Round Robin

Random/Round Robin

NA Random/Round Robin

Random/Round Robin

Write Strategy WriteThrough

WriteThrough

WriteThroughWrite Back

WriteThroughWrite Back

Write Back Write ThroughWrite Back

Write ThroughWrite Back

NA Write ThroughWrite Back

Write ThroughWrite Back

Write Buffer 8 Words4 Addresses

8 Words4 Addresses

16 Words4 Addresses

8 Words4 Addresses

8 Words4 Addresses

16 Words4 Addresses

16 WordsData or Addr

12 WordsData or Addr

16 Words8 Addresses

8 x 16 BytesCoalescing

MMU/MPU MMU MPU MMU MPU MMU MMU MPU None MMU MMUExtra Attributes

Hi Vectors Yes No Yes Yes Yes Yes Yes Yes Yes Yes

Streaming Yes Yes Yes Yes Yes Yes Yes NA Yes Yes

Standby Mode No No Yes Yes Yes Yes Yes Yes Yes Yes

Page 52: 带 Cache 的内核简要介绍

52TM 52带 Cache 处理器初步( 91v07 )

Further Information

ADS 1.2 提供了带 Cache 内核初始化的例子 ADS 页表生成应用 MMUGen

内核技术参考手册 ARM 体系结构参考手册

Page 53: 带 Cache 的内核简要介绍