从程序员的角度看总线和控制器(-)

一般来说,对于计算机中的总线,都是被多个部件共享的,也就是说A设备和B设备可以共享同一根总线。共享同一根总线,可能会引起一些问题,譬如当信息流过总线时,是应该给A还是给B呢。并且,A和B还要将总线上的信号翻译成自己能够处理的信号,否则A和B就不能处理信息咯。如下图:

对于第一种情况,通常引入一个叫做控制器(control)/桥(bridge)的部件,他负责决定将总线上的信息传递给A还是B。对于第二种情况,一般引入一个叫做控制器(control)/适配器(dapter)的部件,这个部件主要负责翻译总线上的信息,然后来让A或B来按照信息的要求运行。如下图:

 

关于控制器,他还有一个重要的功能,缓存。缓存对于数据传输的效率影响非常大。假如总线频率远远大于A频率,总线每秒能传输100个字节,而A每秒却只能处理50个字节的速度,换句话说即使总线每秒能传输100个字节,但是A却只给他50个,这严重的限制了系统的性能,尤其是当总线频率和A频率之间的差值越大时,性能影响愈加明显。

解决这个问题的办法涉及到了计算机领域一个非常重要的实践,局部性原理。局部性原理的大致意思就是程序频繁的访问某一范围内的数据。

通过在控制器中添加一个缓存,就能解决上面所遇到的问题。假设这个缓存的大小是50字节,那么第一次访问A的某一个字节时,控制器器会将A后面的49个字节缓存到控制器内部的缓存中。当下次想要方法A或A后面的字节时,就只需从刚才的缓存中取便可。

这里有两个问题,第一控制器的速度必须要大于A的速度,只有这样从控制器中取内容的速度才要大于从A中取内容的速度。第二个问题,就是刚才提到的局部性原理问题,因为我们假设程序会频繁的访问某一数据或者该数据附近的内容,正是因为有了该假设,控制器才能显著提高数据传输的速度。试想一下,假设程序访问了第一个字节,然后访问了第70个字节,在然后又访问了第140个字节,这时候缓存还有什么用呢?

 

从上幅图中也可以看出contol和dapter的区别,control一般内嵌入被控制的设备中,譬如control内嵌于A部件中。而dater一般独立于设备,通常是插入到主板的某个插槽中。关于这方法的内容,在举两个实际的例子,磁盘控制器内置于磁盘中,而网络适配器则要插到主板中。

 

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值