设备控制器是处理 CPU 传入和传出信号的系统

473 篇文章 2 订阅
452 篇文章 8 订阅

首先需要先了解一下设备控制器的概念:

设备控制器是处理 CPU 传入和传出信号的系统。设备通过插头和插座连接到计算机,并且插座连接到设备控制器。设备控制器从连接的设备处接收数据,并将其存储在控制器内部的一些特殊目的寄存器(special purpose registers) 也就是本地缓冲区中。

特殊用途寄存器,顾名思义是为一项任务而设计的寄存器。例如,cs,ds,gs 和其他段寄存器属于特殊目的寄存器,因为它们的存在是为了保存段号。 eax,ecx 等是一般用途的寄存器,因为你可以无限制地使用它们。 例如,你不能移动 ds,但是可以移动 eax,ebx。

502fd11f3d94adbef5c90fb47ae677eb.png

·通用目的寄存器比如有:eax、ecx、edx、ebx、esi、edi、ebp、esp

·特殊目的寄存器比如有:cs、ds、ss、es、fs、gs、eip、flag

每个设备控制器都会有一个应用程序与之对应,设备控制器通过应用程序的接口通过中断与操作系统进行通信。设备控制器是硬件,而设备驱动程序是软件。

文章相对比较长,字数比较多,大家可以先打开头像关注我,之后慢慢看,///插播一条:我自己在今年年初录制了一套还比较系统的入门单片机教程,想要的同学找我拿就行了免費的,私信我就可以哦~点我头像左下角黑色字体加我也能领取哦。最近比较闲,带做毕设,带学生参加省级或以上比赛///

I/O 设备通常由机械组件(mechanical component)和电子组件(electronic component)构成。电子组件被称为 设备控制器(device controller)或者 适配器(adapter)。在个人计算机上,它通常采用可插入(PCIe)扩展插槽的主板上的芯片或印刷电路卡的形式。

1713fc1f00c382d2f61327f5700a5d5d.png

机械设备就是它自己,它的组成如下:

1bc8cc3dd7f946093aaa8eba9cbc3bef.png

制器卡上通常会有一个连接器,通向设备本身的电缆可以插入到这个连接器中,很多控制器可以操作 2 个、4 个设置 8 个相同的设备。

I/O控制器是控制计算机输入输出的一个最基本的控制系统,可指挥计算机的各个部件按照指令的功能要求协调工作的部件。它由指令寄存器IR(InstructionRegister)、程序计数器PC(ProgramCounter)和操作控制器OC(OperationController)三个部件组成,对协调整个电脑有序工作极为重要。

161e1d31f0795abc6ea9ef6866ce0baf.png

下面小编就从功能和控制方式两个方面带大家进一步了解I/O控制器,想学习的客户朋友就一起看下去吧,绝对干货哦!

2、I/O控制器的功能

● 接收设备CPU指令:CPU的读写指令和参数存储在控制寄存器中

● 向CPU报告设备的状态:I/O控制器中会有相应的状态寄存器,用于记录I/O设备的当前状态。(比如1代表设备忙碌,0代表设备就绪)

● 数据交换:数据寄存器,暂存CPU发来的数据和设备发来的数据,之后将数据发给控制寄存器或CPU。

● 地址识别:类似于内存的地址,为了区分设备控制器中的各个寄存器,需要给各个寄存器设置一个特定的地址。I/O控制器通过CPU提供的地址来判断CPU要读写的是哪个寄存器。

f53bea34ff4917be60658b735add5ef0.png

这里向大家简单介绍常见的几种I/O控制方式,包括程序直接控制方式、中断驱动方式、DMA(直接存储方式)、通道控制方式。

控制器与设备之间的接口通常是一个低层次的接口。例如,磁盘可能被格式化为 2,000,000 个扇区,每个磁道 512 字节。然而,实际从驱动出来的却是一个串行的比特流,从一个前导符(preamble)开始,然后是一个扇区中的 4096 位,最后是一个校验和 或 ECC(错误码,Error-Correcting Code)。前导符是在对磁盘进行格式化的时候写上去的,它包括柱面数和扇区号,扇区大小以及类似的数据,此外还包含同步信息。

控制器的任务是把串行的位流转换为字节块,并进行必要的错误校正工作。字节块通常会在控制器内部的一个缓冲区按位进行组装,然后再对校验和进行校验并证明字节块没有错误后,再将它复制到内存中。

内存映射 I/O

每个控制器都会有几个寄存器用来和 CPU 进行通信。通过写入这些寄存器,操作系统可以命令设备发送数据,接收数据、开启或者关闭设备等。通过从这些寄存器中读取信息,操作系统能够知道设备的状态,是否准备接受一个新命令等。

为了控制寄存器,许多设备都会有数据缓冲区(data buffer),来供系统进行读写。例如,在屏幕上显示一个像素的常规方法是使用一个视频 RAM,这一 RAM 基本上只是一个数据缓冲区,用来供程序和操作系统写入数据。

那么问题来了,CPU 如何与设备寄存器和设备数据缓冲区进行通信呢?存在两个可选的方式。第一种方法是,每个控制寄存器都被分配一个 I/O 端口(I/O port)号,这是一个 8 位或 16 位的整数。所有 I/O 端口的集合形成了受保护的 I/O 端口空间,以便普通用户程序无法访问它(只有操作系统可以访问)。使用特殊的 I/O 指令像是

IN REG,PORT

CPU 可以读取控制寄存器 PORT 的内容并将结果放在 CPU 寄存器 REG 中。类似的,使用

OUT PORT,REG

CPU 可以将 REG 的内容写到控制寄存器中。大多数早期计算机,包括几乎所有大型计算机,如 IBM 360 及其所有后续机型,都是以这种方式工作的。

92639f26f623e468900b7f34b14fce10.png

控制寄存器是一个处理器寄存器而改变或控制的一般行为 CPU 或者其他数字设备。控制寄存器执行的常见任务包括中断控制,切换寻址模式,分页控制和协处理器控制。

对单片机感兴趣的朋友可以找我,我录制了一些关于单片机的入门教程,有需要的童鞋找我拿就行,免费的,私信我“林老师”就可以拿~点击打开我的头像就能领取

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值