胡东华老师讲义第八周
Posted to Be Better
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了胡东华老师讲义第八周相关的知识,希望对你有一定的参考价值。
胡东华老师讲义
点擦可编程只读存储器
使用了二级的开关来进行配置当
当设备出场的时候,读出的默认都是1
20V的高压可以把电子击穿,可以使得电子流出,读出0
如图是电擦除的状态,此时的D端接的是大电压,
- 有1 的地方不管,没有的地方加上高电压
- 然在该写0的地方加上20v编程写入电压
闪存NOR
按字编址1M*16位 按字节编址2M*8 位
井号用来决定是A1还是D15
这里的忙和就绪是两个反信号,
cpu需要根据外设是否忙来进行判断能否继续给外设下发新的指令和信号。
由于闪存的速度非常快,所以可以使用块来进行访问数据
闪存的命令字是通过一系列的数据总线的数据来进行指定数据的的命令操作
并行存储器
如何解决存储器和cpu周期不匹配的问题呢?
改编字长的方法不是切实可行的
增加空间并行结构,是物理上的硬件堆叠,是不提倡的
如图所示就是空间并行,是多个处理器同时处理多个存储单元。
端口的优先判断:片选信号是先来而先判断。
当两端送来的地址一样的时候,启用判别逻辑功能
可以使用时间上的并行
多模块的数据存储器
以出版来说,存储器都是使用顺序存储的方式进行存储的,所以同一个模块的存储数据的是连续的,但是对于多个cpu来说,我们更倾向于使用更加有利于多个存储器读取的方式来进行数据的存储——交叉数据存储方式
顺序存储器:高位是模块,低位是字
交叉存储器:高位是字,低位是模块。
交叉的模块术应该大于等于T/t
cache存储器
他是介于cpu和驻村之间的小容量存储器,存取速度比主存快,能高速的想cpu提供指令和数据。
cache和cpu是交换数据是以字为单位进行的,而cache和主存交换数据是以块为单位进行的
所以主要的就是cache和cpu、主存的数据映射表
cpu把需要的数据同时发给cache和主存,如果cache有的话就由cache发给cpu,如果没有一样的,那么就由主存发给cpu并且更新cache,更新cache的时候把包含cpu所需要的信息的那一块的数据全部都存入cache
cache是一个相连存储器,他不是通过地址直接进行访问的,而是把地址当做一个关键字,直接进行检索访问的
cache的读写操作策略流程图
cache的访问命中率:
cache的平均访问时间就是cache访问时间的数学期望
cache的访问效率:cache访问时间除以平均访问时间
由于cache只是主存大小的千万分之一,那么cache的访问效率能否达到80%?
答案是可以的,通过大量的数据检验,我们分析发现大量的源代码符合二八定律,大量的源代码都是使用的连续的内存的地址,所以cache的访问效率能够达到80%以上,而且这一数据并不需要任何技术处理,现技术加上了大量的调用替换算法加强,使得我们的cache的访问效率可以达到95%左右,苹果的cache技术可以达到99%以上
如何构建cache的映射关系,如何决定cache的调用替换算法?
cache的映射
全级联映射(适合小容量的cache)
cache的一行可以正好存储主存的一块
映射方式如下:
映射表里面的关键词叫做标记位,影射方式 :标记位加标记块
单独的把标记位挂在行号的前面就可以了,这样就可使用标记位来访问主存块。
直接映射方式
cache一共有n行,那么只需要通过cache的最后位数进行检索
组级联映射
组级联映射的方式是把内存分为若干组,每一组的行数是一定的,但是每组的内容是灵活选取的。
此外,组级联映射的存储方式是把主存分为三段进行的。
是上两个方式的折中。
x路组级联映射,一组就是x行主存内容。
cache的替换策略
cache的替换策略,替换策略和cache的映射方式有着很紧密的关系
直接映射方式需要替换方式吗?不需要
全级联替换方式组级联替换方式需要替换策略吗?行内需要
直接替换的替换策略
-
随机的替换策略
-
最不经常的替换策略(LFU)
每一行设置一个计数器,被访问的计数行加一,换出的是计数最小的一位。
-
最近最少的替换算法(LRU)
(我拿过去赌明天),使用过去长久未被访问过得行换出。每行设置一个计数器,cache每命中一次,命中行的计数器清零,其他的计数器加一。这也是目前最有效地计数方法
- 计数器的位数:计数器和行数有关,只需要把每一行使用的频率区分开就可以了。例如4行cache只需要2位
cacahe的写操作策略
cache是一个为了加速读写主存的一个副本,但是如果每一次的cache的写入都同步到主存当中,那么cache的写操作就失去了意义,如何快速方便的对cache进行写操作呢?
1.写回法
当cpu写命中cache的时候,cpu仅仅改写cache的内容而不是立即存入主存,只有当此行没丢掉的时候才写入主存,但是这种方法每一个cache的行必须配备一个修改位置。以此反映一个cache是否被该写过
2.全写法
3.写一次
cache的存储容量
为了表示数据是否有效,可以配备一位有效位。
有效位 | 一致性维护位 | 替换算法控制位 | 标记位 | 数据区 |
---|---|---|---|---|
1位 | 1位 | n位 | t位 | 越大越好 |
cache的存储器容量 = 每行位数 * 总行数。
每行的位数 = 1+1+n+t+数据位(主存一块的大小)。
虚拟存储器
它是借助磁盘等辅助存储空间来辅助存储器扩大存储容量
页式虚拟存储器
分页式存储系统中把用户程序逻辑空间分割为大小相等的片,称为一
个逻辑页或者页,同时按照同样的大小将系统物理内存分割为大小相等的
存储块,我们称为物理块或者块。
分页系统而好处:实现程序的离散装入,也实现了程序的部分装入;
程序系统的页数远远大于物理内存的块数。
在分页系统当中,可以使用页号与业内偏移地址构成,物理空间可以用块号与块内偏移地址构成。
页表寄存器的
使用Cache来存储页表--快表
可以使用cache把经常访问的页表和块号存储起来,大大加快访问速度
页表存储器的最好情况和最差情况
最好:在cache中找到了页块转换器对应的页号和块号,然后直接在cache中又访问到了所查询到的页块号对应的地址数据。
最差:在cache中没有找到页块转换器对应的行号和块号,没有查到,在主存找到。然后在cache中根据查询到的页块号查询所对应的地址数据,没有查到,在主存找到。
书上有八种可能。
主存中的页表替换策略
如果主存和cache都没有命中,那么就需要启动缺页机制了
段式虚拟存储器
分页方式过于硬核,对程序员不太友好,所以我们使用了按段划分的策略。把数据按段划分很好理解,每一个大小不固定,是按照程序的代码段和数据段来存储数据。
便于实现共享和保护,只需要在需要的页面前加上一个保护位就可以了,一般数据位进行保护,代码段进行共享。
在分段系统中,还有一个段表的寄存器,可以使用段表寄存器把段号转换成段在内存中的机制形成的物理地址。
但是如何更高效的利用存储空间呢?
端页式系统的虚拟存储器
这种虚存储器兼具了段式存储和页式存储的优点,可以把用户的程序分成了若成几若干段,每一段由若干页组成,于是可以
以上是关于胡东华老师讲义第八周的主要内容,如果未能解决你的问题,请参考以下文章