设备控制器
2016-06-28 15:42
197 查看
---- 设备控制器是计算机中的一个实体,其主要职责是控制一个或多个I/O设备,以实现I/O设备和计算机之间的数据交换。
它是CPU与I/O设备之间的接口,它接收从CPU发来的命令,并去控制I/O设备工作,以使处理机从繁杂的设备控制事务中解脱出来。
---- 设备控制器是一个可编址的设备,当它仅控制一个设备时,它只有唯一的一个设备地址;若控制器可连接多个设备时,则应含有多个
设备地址,并使每一个设备地址对应一个设备。
---- 可把设备控制器分成两类:一类是用于控制字符设备的控制器,一类是控制块设备的控制器。
1、设备控制器的基本功能
1)接收和识别命令
---- CPU可以向控制器发送多种不同的命令,设备控制器应能接收并识别这些命令。为此,在控制器中应具有相应的控制寄存器,用来存放接收
的命令和参数,并对所接收的命令进行译码。
2)数据交换
---- 这是指实现CPU与控制器之间、控制器与设备之间的数据交换。对于前者,是通过数据总线,由CPU并行地把数据写入控制器,或从控制器
中并行地读出数据;对于后者,是设备将数据输入到控制器,或从控制器传送给设备。为此,在控制器中需设置数据寄存器。
3)标识和报告设备的状态
---- 控制器应记下设备的状态供CPU了解。例如,仅当该设备处于发送就绪状态时,CPU才能启动控制器从设备中读出数据。为此,在控制器中
应设置一状态寄存器,用其中的每一位来反映设备的某一种状态。当CPU将该寄存器的内容读入后,便可了解该设备的状态。
4)地址识别
---- 就像内存中的每一个单元都有一个地址一样,系统中的每一个设备也都有一个地址,而设备控制器又必须能够识别它所控制的每个设备的地址。
此外,为使CPU能向(或从)寄存器中写入(或读出)数据,这些寄存器都应具有唯一的地址。
控制器应能正确识别这些地址,为此,在控制器中应配置地址译码器。
5)数据缓冲
---- 由于I/O设备的速率较低而CPU和内存的速率很高,故在控制器中必须设置一缓冲器。在输出时,用此缓冲器暂存由主机高速传来的数据,然后
才以I/O设备所具有的速率将缓冲器中的数据传送给I/O设备;在输入时,缓冲器则用于暂存从I/O设备送来的数据,待接收到一批数据后,再将缓冲器
中的数据高速地传送给主机。
6)差错控制
---- 设备控制器还兼管对由I/O设备传送来的数据进行差错检测。若发现传送中出现了错误,通常是将差错检测码置位,并向CPU报告,于是CPU将
本次传送来的数据作废,并重新进行一次传送。这样便可保证数据输入的正确性。
2、设备控制器的组成
---- 由于设备控制器位于CPU与设备之间,它既要与CPU通信,又要与设备通信,还应具有按照CPU所发来的命令去控制设备工作的功能,因此,
现有的大多数控制器都是由以下三部分组成的。
1)设备控制器与处理机的接口
---- 该接口用于实现CPU与设备控制器之间的通信。共有三类信号线:数据线、地址线和控制线。
数据线通常与两类寄存器相连接,一类是数据寄存器(在控制器中可以有一个或多个数据寄存器,用于存放从设备送来的数据(输入)或从CPU送来
的数据(输出));一类是控制/状态寄存器(在控制器中可以有一个或多个这类寄存器,用于存放从CPU送来的控制信息或从设备送来的状态信息)。
2)设备控制器与设备的接口
---- 在一个设备控制器上,可以连接一个或多个设备。相应地,在控制器中便有一个或多个设备接口,一个接口连接一台设备。在每个接口中都存在
数据、控制和状态三种类型的信号。控制器中的I/O逻辑根据处理机发来的地址信号去选择一个设备接口。
3)I/O逻辑
---- 在设备控制器中的I/O逻辑用于实现对设备的控制。它通过一组控制线与处理机交互,处理机/CPU利用该逻辑向控制器发送I/O命令;I/O逻辑对
收到的命令进行译码。每当CPU要启动一个设备时,一方面将启动命令发送给控制器;另一方面又同时通过地址线把地址发送给控制器,由控制器中
的I/O逻辑对收到的地址进行译码,再根据所译出的命令对所选设备进行控制。
它是CPU与I/O设备之间的接口,它接收从CPU发来的命令,并去控制I/O设备工作,以使处理机从繁杂的设备控制事务中解脱出来。
---- 设备控制器是一个可编址的设备,当它仅控制一个设备时,它只有唯一的一个设备地址;若控制器可连接多个设备时,则应含有多个
设备地址,并使每一个设备地址对应一个设备。
---- 可把设备控制器分成两类:一类是用于控制字符设备的控制器,一类是控制块设备的控制器。
1、设备控制器的基本功能
1)接收和识别命令
---- CPU可以向控制器发送多种不同的命令,设备控制器应能接收并识别这些命令。为此,在控制器中应具有相应的控制寄存器,用来存放接收
的命令和参数,并对所接收的命令进行译码。
2)数据交换
---- 这是指实现CPU与控制器之间、控制器与设备之间的数据交换。对于前者,是通过数据总线,由CPU并行地把数据写入控制器,或从控制器
中并行地读出数据;对于后者,是设备将数据输入到控制器,或从控制器传送给设备。为此,在控制器中需设置数据寄存器。
3)标识和报告设备的状态
---- 控制器应记下设备的状态供CPU了解。例如,仅当该设备处于发送就绪状态时,CPU才能启动控制器从设备中读出数据。为此,在控制器中
应设置一状态寄存器,用其中的每一位来反映设备的某一种状态。当CPU将该寄存器的内容读入后,便可了解该设备的状态。
4)地址识别
---- 就像内存中的每一个单元都有一个地址一样,系统中的每一个设备也都有一个地址,而设备控制器又必须能够识别它所控制的每个设备的地址。
此外,为使CPU能向(或从)寄存器中写入(或读出)数据,这些寄存器都应具有唯一的地址。
控制器应能正确识别这些地址,为此,在控制器中应配置地址译码器。
5)数据缓冲
---- 由于I/O设备的速率较低而CPU和内存的速率很高,故在控制器中必须设置一缓冲器。在输出时,用此缓冲器暂存由主机高速传来的数据,然后
才以I/O设备所具有的速率将缓冲器中的数据传送给I/O设备;在输入时,缓冲器则用于暂存从I/O设备送来的数据,待接收到一批数据后,再将缓冲器
中的数据高速地传送给主机。
6)差错控制
---- 设备控制器还兼管对由I/O设备传送来的数据进行差错检测。若发现传送中出现了错误,通常是将差错检测码置位,并向CPU报告,于是CPU将
本次传送来的数据作废,并重新进行一次传送。这样便可保证数据输入的正确性。
2、设备控制器的组成
---- 由于设备控制器位于CPU与设备之间,它既要与CPU通信,又要与设备通信,还应具有按照CPU所发来的命令去控制设备工作的功能,因此,
现有的大多数控制器都是由以下三部分组成的。
1)设备控制器与处理机的接口
---- 该接口用于实现CPU与设备控制器之间的通信。共有三类信号线:数据线、地址线和控制线。
数据线通常与两类寄存器相连接,一类是数据寄存器(在控制器中可以有一个或多个数据寄存器,用于存放从设备送来的数据(输入)或从CPU送来
的数据(输出));一类是控制/状态寄存器(在控制器中可以有一个或多个这类寄存器,用于存放从CPU送来的控制信息或从设备送来的状态信息)。
2)设备控制器与设备的接口
---- 在一个设备控制器上,可以连接一个或多个设备。相应地,在控制器中便有一个或多个设备接口,一个接口连接一台设备。在每个接口中都存在
数据、控制和状态三种类型的信号。控制器中的I/O逻辑根据处理机发来的地址信号去选择一个设备接口。
3)I/O逻辑
---- 在设备控制器中的I/O逻辑用于实现对设备的控制。它通过一组控制线与处理机交互,处理机/CPU利用该逻辑向控制器发送I/O命令;I/O逻辑对
收到的命令进行译码。每当CPU要启动一个设备时,一方面将启动命令发送给控制器;另一方面又同时通过地址线把地址发送给控制器,由控制器中
的I/O逻辑对收到的地址进行译码,再根据所译出的命令对所选设备进行控制。
相关文章推荐
- poi操作ppt,XSLFTableCell.setText报错:java.lang.IndexOutOfBoundsException: Index: 1, Size: 1
- Springmvc静态资源过滤
- 面试题
- Centos7 Docker 多主机 容器互连--基于OVS
- ORA-01791: 不是 SELECTed 表达式
- 邮箱APP个别汉字丢失问题解决
- blender智障脑补篇一
- Redis on Windows
- 聊聊Web App、Hybrid App与Native App的设计差异
- 消息提示类控件之PopupWindow(悬浮框)的基本使用
- git
- linux进程状态浅析
- 数据结构的一些复习点
- beego1.6版本服务器部署运行模板文件报错问题
- java常用的排序算法的思想以及实现
- iOS安全攻防:越狱后Hack必备的命令与工具
- 报错:An error occurred at line: 22 in the generated java file The method getJspApplicationContext(ServletContext) is undefined for the type JspFactory
- Codeforces 372B Counting Rectangles is Fun
- Android中persistent属性用法详解
- Node.js express不是内部或外部命令,也不是可运行的程序或批处理文件