赞
踩
G端有电则s端和d端都有电,如果D端加正电压,则形成浮动栅,S和D之间不导通为0;如果D端不加正电压,不形成浮动栅,则S与D导通为1 ;
如果想要消除浮动栅,擦除信息,需要通过紫外线照射,物理擦除掉
情况假定:CPU连接储存器的地址线有10根,数据线有8根,这就要求存储单元的容量是1K * 8位,给定存储芯片容量为1K * 4位,我们要按照下图进行每个存储单元的位扩展,将4位扩展到8位。
A0-A9是连接到存储器的10根地址线,D0-D7是连接到存储器的8根数据线;
通过观察我们发现,两个芯片分别连接到了8根地址线,但是两个芯片却平分了数据线进行连接,这是为什么?因为:1.两个芯片对于CPU来说是一个存储器,所以地址线是面对两个芯片的,译码器译码后选中的储存单元两个芯片的位置是一样的,但是存储数据时,因为每个芯片的每个单元只有4位,所以只能连接4根数据线,共同返回或储存自己的四位数据构成八位数据。
注意,两个芯片连接的数据线必须是有序的,一个前四根,一个后四根,分别储存8位数的高位和低位
要实现位扩展,就要将两个芯片接入相同的片选线和相同的读写控制线,对外作为一个存储器;
当有电流信号进入时,片选线首先确定是该储存器,然后读写控制信号反馈读写控制(假定为存入操作),则数据会通过 对应数据线存入两个芯片相同地址的存储单元,完成数据存储操作。
假定我们有11根地址线,8根数据线,芯片容量为1K * 8位的存储芯片(可见我们芯片的存储字长满足要求但是存储单元数量不满足要求,2^11是2K个存储单元,所以我们需要两个芯片来构成一个存储单元),存储器结构见下图:
跟位扩展不同,位扩展是对外存储单元数量一致,把两个芯片的两个存储单元都映射到同一个地址上;字扩展是直接扩展存储单元数量,所以两个存储单元应该映射不同的存储地址 (即不能同时工作),这就用到了A10这个第十一条地址线,当其为1时,将地址信息映射到右边的存储芯片上,当为0时映射到左边存储芯片上,这样就平分了2K得存储单元(这时的A10线就起到了片选线的作用);在A10为1时需要将1通过非门转换为0,不然地址线经过译码器后最小的行选线就是2^10不合理)
同样两个存储芯片因为不能同时工作,切存储字长满足要求,每个芯片都接了8根数据线。
我们假定:有12根地址线,8根数据线,存储芯片为1K * 4位(2^12等于4K,8位需要2个存储芯片)我们可以做出下面组合。
我们可以用两个芯片组成一个小存储器满足8位存储字长的要求;
我们可以用4组上面的小存储器构成存储器,满足存储器4K得要求;
因为一共有四组,我们就需要两个片选线和一个译码器来根据片选线内容来选中不同的组进行读写 ;
我们一共有2^12个地址,我们用A10-A11这两个地址线来作为片选线;0011....00(一共12位)~0011.....11(12位)指向第一组小存储单元,010....000~011.....111指向第二组,100....00~101....111指向第三组,110....000~111....111指向第四组;如此将所有地址分配完毕;可以看出来最高两位决定了地址指向的储存单元00为第一组;01为第二组;10为第三组;11为第四组;
A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0
0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0
0 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1
0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0
0 1 1 0 1 0 1 1 1 1 1 1 1 1 1 1
S1为高电平(1),并且S2和S3为低电平(0)时,译码器才能够使用,圆圈是非门;
输入端有ABC三条地址线,一共有2^3=8种结果,分别对应Y0-Y7一共8个输出端。
A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1
0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1
0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1
{000,001,010,011,100,101,110,111},这里面的所有数据是合法的,这种情况相互之间转换只需要一位变换,所以不具备纠错能力,能够检0位错,纠0位错;
{000,011,101,110} 这种情况的四个数之间,要实现两种树之间的转换至少要改变两位,能够检查1位错,纠0位错;解释:比如一个不合法数出现001,则对比发现错误,但是我们无法纠错,因为我们无法判断001是由000最后一位加1得来的,还是011的第二位变为0得来的。
{000,111}这个集合我们用000代表0,用111代表1。能够检查1位错,纠正1位错。(一旦发生错误如:011则我们能够检测,但是无法判断是由000变两位过去,还是由111变1位过去的;)
{0000,1111},检查两位错,纠正1位错;
{00000,11111}检查2位错,纠正2位错;
2^k >= n + k + 1 ,n为实际数占用的二进制位数,k为数据校验的位数
根据公式: 2^K >= n + k + 1 ,带入n=4得k=3,即要分三组
c1、c2、c3为校验位
因为芯片每年速度提升一倍,存储器每十年存储性能才能提升一倍,这这种不断增大的差距,导致CPU性能严重浪费,这种现象我们称为内存墙。
所以连续读取四个字的时间为 T + (4-1)B;
SDRAM (同步DRAM),用系统时钟控制储存器与CPU的存取,必须在指定时间完成指定流程,这要求SDRAM性能很高才可以,这样CPU就不会等待。
RDRAM,由rambus开发,主要用于解决存储器带宽问题;
带cache的DRAM,原理大概就是存储芯片中有cache,当第二次访问同一行数据时,就可以直接从 SRAM组成的cache中获取,这样有利于促发式读取。
提高存储器性能,缩小CPU性能增长过快,带来的剪刀差,减小内存墙对CPU的性能限制。
命中:某个主存块与cache中的块建立了对应关系,这时候标记记录了cache块和主存块的对应关系,CPU可以直接从cache中直接获取主存中该块的内容。
未命中:某个主存块与cache没有建立对应关系,CPU只能通过主存访问该块中的数据。
命中率:命中率跟cache的块数和块的大小有关
效率e跟cache的命中率有关:
e=访问cache的时间/平均访问时间*100%;
那么访问的cache的命中率为h,访问cache的时间为Tc,访问主存的时间为Tm:
e=Tc/ [Tc * h + Tm * (1-h) ] * 100%,那么我们可以推知:
e的范围为1(命中率为100%)- Tc/Tm;
上面的公式情况是,同时访问主存和cache的情况,如果是先访问cache,再访问主存公式如下:
e=Tc/ [Tc * h + (Tc +Tm) * (1-h) ] * 100%
即写入操作时同时写入主存和cache,这样保证了数据时刻保持一致,但是因为频繁访问主存导致CPU性能消耗
先写入cache中,等到块被退出cache中后再更新主存中的数据,这样提高了CPU速度,但同样面临,多个cache对应一个主存时,不同cache中块数据一致性问题。
现代计算机往往采用多级cache,分为片内cache(直接做在cpu内部)片外cache(cpu外部,容量较内部大)
统一缓存往往将指令和数据放到一个缓存中,分离缓存将指令和数据放到不同的缓存中,这样避免了指令执行过程中和数据存写的冲突。
将主存中的块按照Cache中块的个数分成多个区,每个区的块数量是等于Cache中块的数量的,例如,一区的第一块要存储的化只能存储到Cache的第一个块。
标记用来记录该块属于第几个区;当CPU访问时,会先对比块号,然后比较器比较CPU所需要的块号的区号是否和Cache相同块号的区号一致,如果一致就是命中,不一致就是未命中。
这种方式很快,结构也比较简单(优点)但是因为每个区的块再cache中都有固定位置,无法只能分配空闲的cache中块给非指定区的块,这样就又导致cache利用率不高。(缺点)
主存中每个块都可以对应cache中所有块,这样比较器中就需要比较区号和块号两个内容,增加了比较器的复杂度,速度慢,但是cache的利用率较高。
组相连方式,主存中每个区的块数 等于Cache中的组数,Cache中的每组可以有很多块,这里是2块。每个区的第n个,只能存放到Cache中第n组中的任意一个块中,这样就使不同区同一位置块等待可能性变小,同时电路结构也比较简单,仅需要两个比较器比较同一组中的标签和块号,来确定CPU需要的数据。
离CPU近的可以使用直接相连方式,保证速度和效率,离CPU最远的使用全相联方式,因为对速度要求更低。
在cache块占满后我们需要用到块替换算法:
辅助存储器不直接参与于CPU的数据交换,如果CPU需要,要先将数据存储到主存中,而后再进行信息交换和获取。
我们通过线圈通入的电流方向不同,改变磁通路,影响磁表面的磁方向,写入1或者0。
当磁头移动到数据单元时,磁表面的磁方向会传入磁通,转换成不同的电势,从而判断读出的数据。
固定磁头(每个磁道都有一个磁头)和移动磁头(每个盘面只用一个磁头,磁头可在磁道间移动)
固定盘和可换盘。
传动机构带动磁盘组转动,磁盘组转动后,磁头悬浮,磁通位置由音圈电机控制“小车”推动,音圈电机接收磁盘控制器发送来的磁道信号,判断磁头位置控制小车改变磁头位置,并测速输出。位置检测也会实时检测磁头位置 。
磁盘的盘片多由铝合金制成
对比方面 | 硬盘 | 软盘 |
---|---|---|
速度 | 快 | 慢 |
磁头 | 固定、活动、浮动 | 活动、接触盘片 |
盘片 | 固定盘,大部分不可更换 | 活动盘,可更换 |
价格 | 贵 | 廉 |
环境 | 苛刻 |
各个I/O设备分散连接在计算机的CPU上,I/O设备和CPU直接连接,导致外部I/o设备更换及其困难,这时后CPU和I/O设备之间的工作是串行化的,在I/O设备输出时,CPU必须运行相应程序支持,或者等待。
这一时期,CPU和外部I/O设备通过BUS(总线)连接,进行数据传递,I/O设备通过I/O接口接到总线上,可以实现扩容缩容。这时CPU和外部I/O设备的工作是并行化的,并行化的方式可以这样实现:(中断方式、DMA方式),这一阶段,CPU仍需要参与I/O设备传送完数据的后续处理工作(比如I/O设备关闭)
这一时期,I/O设备和CPU之间通过通道连接,通道有自己的指令集,负责I/O设备和CPU之间的数据传输,这时CPU就不用再参与I/O的结束工作中了。
这一阶段,使用专门的程序或者设计专门处理器,实现控制I/O设备的输入和输出,这种方式I/O设备和CPU之间的独立程度就更高了,I/O设备就直接从CPU中独立出来。
这就需要我们请出DMA来解脱CPU了
C、DMA方式
I/O设备直接通过DMA程序连接主存,数据交换的工作交给DMA来办
总结:CPU越来越独立于I/O设备,效率由低到高
选址功能 | 设备选择电路 |
数据传输 | 数据积存器 |
传送命令 | 命令寄存器、命令译码器 |
反映设备状态 | 设备状态触发器 |
CPU连接多个设备,当CPU发出数据写入或输出命令时,接口开始进入准备工作,CPU就会一直等待接口相映,在等待的同时同时请求其他设备,直到有设备响应回数据再开始下一步工作。
当CPU再执行某段程序时,正在执行K指令时,收到了程序中断指令,并且这个中断指令的优先级比现行程序优先级高,那么CPU会将K指令执行完毕,然后保存程序执行现场(包括程序程序执行位置的断点,需要用到的保存到寄存器中的数值,等其他复杂过程),之后跳转开始执行中断程序,中断程序执行完成后,再恢复原程序的程序现场,继续执行原程序。
在CPU发出启动打印机的指令后---> 打印机开始启动,启动完成后,发送程序中断请求---->CPU收到中断指令后开始将数据发送到打印机--->打印机收到数据后,打印接收到的信息,打印完毕后再次发出中断请求,请求数据返回---> 至此陷入循环,直到内容打印完毕。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。