天天看点

ARM体系结构与编程 阅读笔记P207

在ARM中采用的是组相连的地址影响方式。如果cache块大小为,则同一块中的各地址中的位[31:L], 就是   

31---------------------------------- 0

31往右数的L位

如果cache组大小是(每组包含的块数),则虚拟地址位[L+S-1:L]用于选择cache中的某个组。

Cache的分类:

1 独立cache  统一cache 

独立是 指令和数据读写时时不同一cache。

2 写通cache和写回cache

写回只写入cache不入主存。

写通,cache,主存都有。

3 读操纵分配cache和写操作分配cache。

读操作分配: 如果cache不命中,只是简单写入主存,要读取时才进行cache预取。

写操作分配:  如果cache不命中,cache预取,

4 缓冲技术:

ARM中 I/O操作经常被映射为存储器读取操作实现。Cache技术要求两次读要有同样的结果,但是I/O操作就不满足上述条件。

写缓冲技术,(buffer),如果I/O操作被缓冲了,等到一个时间再把结果写回到I/O端,就好像又中断了一样。

所以MMU和PU 会将某些地址空间设置成非缓冲的。(uncachable,unbufferable)

5 存储系统的一致性问题。

地址映射关系造成的数据不一致

比如虚拟地址到物理地址的映射关系发生变化前,虚拟地址A1所在的数据块已经预取到cache,当虚拟地址和物理地址映射关系发生变化后,CPU访问A1,再用cache中数据块将发生错误。

6指令cache的数据一致性问题

Cache内容锁定,让关键代码和数据所在的块不会被替换。

CP15中 C7用于控制cache和写缓冲区

C9是cache内容锁定寄存器。

快速上下文切换技术 fast context switch extension , fcse. 

一般情况下,两个进程占用的虚拟地址空间有重叠,系统在这两个进程间进行切换时,必须进行虚拟地址到物理地址的重映射。这就涉及到很多东西。MMU中页表,cache,TLB。

Fcse将各进程的虚拟空间切换成不同的虚拟空间。这样进行进程间切换时就不需要进行虚拟地址到物理地址的重映射。

继续阅读