计算机,总线,I/O端口,I/O接口,USB接口详解


一般来讲I/O端口就是一组寄存器,本质上跟内存一样。所以计算机对I/O端口寻址,有两种方式,一种是将内存寻址和I/O端口寻址整合在一起,即使用同一控制总线和数据总线。第二种是,I/O端口和内存复用数据总线,分别使用控制总线,分别寻址.

关于总线和I/O的基本原理在计算机组成原理的书上都有详细解释。但是肯定仍有疑惑.

本质上总线,I/O端口的原理跟网络通信的原理是一样的。在计算机体系结构中,除了单个器件的数字逻辑原理和电气原理之外,将这些器件组成的原理本质上就是数据通信。cpu需要与cache通信,cache与内存通信,bridge需要与I/O设备通信等等。而总线本质上就是连接接收和发送方的链路.正如同网络中链路加上节点有网络拓扑,总线也有总线拓扑。不同的总线拓扑构成不同的总线结构。并且因为有高速总线和低速总线,并行总线和串行总线,也体现了不同总线传输数据速度的能力。这与网络何其相似!不同的总线拓扑在计算机组成原理书中有展示。

经典的点对点通信结构中,有发送方,接收方以及一条链路.
$$发送方-------------->接收方$$

本质上来讲,发送方和接收方可以看作两个存储器,一个存储发送的数据(用C语言表示就是一个数组char send[length]),一个存储接收的数据(用C语言表示就是一个数组char receive[length]).到这里就会发现通信模型完全可以表示成套接字编程模型。

正如同五层网络模型,应用层,传输层,网络层,链路层,物理层。
在计算机体系结构中,因为基本上是点对点通信,基本上没有路由问题,所以可以摘掉网络层。

I/O接口就是一段连续的I/O端口,再配上地址解析器和一些控制电路。其中这段I/O端口又细化为数据寄存器,控制寄存器,指令寄存器。这些内容计算机组成原理中都有讲.

如果把I/O接口想象成点对点通信中的发送方,设备控制器想象成接收方,那么它们的链路呢,我们可以假设这段链路是USB(通用串行总线).串行总线就是每次只发一个比特。

事实上USB构成了链路上的协议,这个协议决定总线每次传几个比特,有没有专门的发送线和传输线.电源线是几伏的。这个协议规定了总线应该是什么样的.

正如同TCP协议,首先发送方和接收方需要握手,然后为了防止传输时比特发生错误,需要比特校验.传输错误时需要重传一般,I/O接口与设备控制器之间需要实现一个传输层协议.

好了,我们现在有安全的线路传送。但是如果我们要传的是一个比较复杂的数据结构的字节流,那么要让设备控制器怎么理解这个字节流呢,比如穿了一个4Byte的数据,设备控制器应该把4Byte理解为一个4字节整数还是2个2字节整数,还是4个char型字符.这需要接收方和发送方约定传输数据的格式。所以这又要实现一个应用层的协议.

综上,如果用网络模型来理解总线模型和I/O输入输出的话,那么就相当容易理解了,正如同使用客户端/服务器模型来理解进程间通信和微内核一样。总而言之,数据通信并不局限于网络上的数据传输,实际上网络传输中的某些原理在计算机行业中无处不在.

所以计算机网络,数据通信这两门课重中之重,而要入门这两门课,首先要学会套接字编程,理解客户端/服务器模型,TCP/IP模型。至于数据通信中的卷积,滤波,采样等概念在其它领域的应用又是另外一个课题了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值