- 1、本文档共3页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
I/O结构
1、I/O中断
每个设备控制器都有本地缓冲存储器和一系列用于特殊用途的寄存器,开始IO操作时,CPU先给设备控制器中的响应的寄存器赋值,然后设备控制器会读取寄存器,以决定下一步的操作,当读取到读指令时,它就将数据读取到本地缓冲存储器,数据传输完毕,设备控制器就会通过中断通知CPU。当用户进程请求IO时会有两种情况,一种是同步IO,即知道IO操作完成后将控制返回给用户进程;另外一种是异步IO,即不等待输入输出结束,立即返回控制。
2、DMA结构
当从一个终端输入设备读入数据时,输入的第一个字符会被发送到计算机,当接收到这个字符时,连接在该终端上的异步通信(或串行端口)就会向CPU发送一个中断,CPU接收到中断后就会执行一些指令(如果CPU正在执行某个指令,那么中断就要等待该指令执行完毕)。保存这个中断指令的地址,并将控制转移给中断服务程序。
中断服务程序要存储一些CPU寄存器值,然后检查最近的输入输出有没有产生错误,再从设备中读取字符存在缓冲器中,调整指针和计数变量以读取下一个值。下一步中断服务程序将在内存中设置一个标志,向操作系统的其他部门表示接收到了输入。其它的部分则负责处理缓冲器中的数据,并将字符传送给请求数据的程序。然后,中断处理程序恢复刚才保存的寄存器内容并将控制返回给被中断的指令。
直接内存访问DMA技术则是将整个数据块放到内存中,整个过程没有CPU干预,只是在数据块放到内存之后发送一个中断。CPU的基本操作是相同的。一个用户程序或者操作系统本身可能请求数据传输。操作系统从缓冲池中为数据传输指定一个缓冲器(一个空缓冲区用于输入,一个满缓冲区用于输出)。(根据设备类型,一个缓冲器典型的大小在128到4,096字节之间。)下一步,设备驱动程序(操作系统的一部分)将源地址、目标地址和传输数据长度设置到DMA控制器的寄存器中。然后,DMA控制器命令开始I/O操作。当DMA控制器执行数据传输时,CPU可以自由的执行其它的任务。因为存储器一次通常只能够传输一个字,DMA控制器从CPU中“窃取”了存储周期。在进行DMA传输时,周期挪用(cyclestealing)降低了CPU的执
行速度。传输结束后DMA控制器就向CPU发出中断。
3、存储器结构
计算机程序只能在主存储器(RAM)中运行,RAM和处理器内部寄存器是唯一能被处理器直接访问的大块存储空间,它由存储器队列组成。每个字都有自己的地址,通过调用load(一次将一个字从RAM移动到CPU某个寄存器)或者是store指令(将寄存器内容转移到RAM)对具体的地址进行读写。除了load\store指令外,CPU自动从RAM读取指令执行
冯诺依曼计算机体系结构中,一个指令周期首先从内存中读取指令,然后将指令读取到指令寄存器中,解码该指令,也有可能从内存中读取操作数放到寄存器中。内存地址序列是由正在运行的程序产生
4、RAM
通常IO指令允许在IO设备寄存器与内存之间进行数据传输,为了提高效率,许多计算机系统采用了内存映象I/O。内存的一部分地址范围被留出来并映射到设备寄存器中。对设备寄存器的访问就可以通过读写内存地址实现。
CPU中的寄存器的访问时间通常是一个CPU时钟周期。大多数CPU能够以每个时钟跳变一个或多个操作的速率完成对指令的解码并实现对寄存器内容的简单操作。主存储器就不同了,它通过存储总线进行数据传输。内存的访问通常需要花费多个CPU时钟周期才能完成,这样,因为缺乏完成指令所需的数据,处理器通常需要停止运行(stall)。由于要频繁的访问内存,这种情形简直忍无可忍。解决方法是在CPU和主存储器间添加快速存储器。一个缓冲存储器可以调节CPU和内存间的速度差异,它被称为高速缓冲存储器。
5、一致性
假设一个文件B中有一个整数A,值为1,要进行加法操作,这时,加法操作进程就需要从磁盘上的B文件中将整数A读到内存中,然后将A存入cache(高速缓冲存储器)和CPU内部寄存器中。这时A就存在三个不同的地方了,如果加法操作在内部寄存器中完成A的值就被改变了这时必须将改变后的A值写回到磁盘中A的值才相同。在单任务计算环境中,这种策略并不困难,因为总是要将A拷贝到最高层的存储器中进行访问。然而,在一个多任务的环境中,CPU往返于多个进程。如果同时有几个进程要访问A,那么每个进程都必须要获得最近更新的A的值,这一点必须要非常的小心。在多处理机环境中就更为复杂了,除了要维护内部寄存器之外,每个CPU还有一个本地cache。这样,多个cache中可能会同时保留一个A的拷贝。因为各个CPU并发运行,所以我们必须要确保某个cache中的A的更新要立即反映到其它的ca
文档评论(0)