计算机组成原理自学笔记(三)
两周前算是把这个哈工大的mooc给看完了,算是粗略的过了一遍。看到有朋友在学一些新的技术,感觉自己还是落后很多,自我安慰一下按照自己的节奏来吧,反正这些基础债无论如何还是要还。组成原理结束后打算去看下操作系统,数据结构和算法还要再做一点心理建设再往后放放吧。持续学习还是很难坚持,就算断断续续也总比不做强一点,心理建设玩了,开干吧。
总线通信控制
解决通信双方协调配合问题
总线传输周期
主设备与从设备完成一次完整并且可靠的通信所需要的时间
- 申请分配阶段: 主模块申请总线仲裁决定
- 寻址阶段: 主模块向从模块给出地址和命令
- 传数阶段:主模块和从模块交换数据
- 结束阶段:主模块撤销有关消息
通信方式
-
同步通信: 由统一时标(定宽定距时标)控制数据传送
直接视频截图了????
一般应用在总线长度比较短,各个模块存取时间比较一致时 -
异步通信:采用应答方式,没有公共时钟标准
不互锁:主设备发出通信请求,从设备接收到通信请求后进行应答,之后主设备撤销请求信号,从设备撤销应答信号;主设备不管是否接收到应答信号,经过一定的延时以后都会撤销请求信号,从设备也不管主设备是否接收到应答信号,经过一定的延时以后都会撤销应答信号;可靠性存在问题
半互锁:主设备发出请求,从设备接收到请求后发出应答信号,主设备接收到应答信号后发送撤销信号,主设备接收不到应答信号,这个请求将保持;可能导致请求一致保持
全互锁:主设备发出请求,从设备接到请求后发出应答信号,主设备接收到应答信号后会发送撤销请求,同样只有接收到主设备撤销请求后,从设备才会撤销应答信号 -
半同步通信: 同步异步结合(主要是解决不同速度的两个模块的通信)
同步:发送方用系统时钟的前沿发信号,接收方用系统时钟后延判断识别;异步:允许不同速度的模块和谐工作,增加一条“等待”响应信号
以上三种通信方式共同特点:
主模块发出地址、命令 – 占用总线
从模块准备数据 --不占用总线,总线空闲
从模块向主模块发送数据 --占用总线空闲
以上三个过程在中间的过程中,总线是空闲的,而总线连接了多个模块(设备)是系统瓶颈,总线在传输周期中有空闲是资源浪费,分离式通信将解决此问题
- 分离式通信:充分挖掘系统总线每个瞬间的潜力
- 子周期1:主模块申请占用总线,使用完即放弃总线的使用权
- 子周期2:从模块申请占用总线,将各种信息送至总线上
减少总线空闲,I/O设备准时放弃总线占用
总线是重点内容,坦率的讲看完之后印象并不是特别深刻,只能说是大概知道有这么回事。之前了解到线程间锁的实现最终是由锁总线来实现的,当然其中还涉及更多的细节,追究下去就感觉这东西有点无底洞了,贴几篇文章以备以后回溯吧。
Intel 64汇编指令集中的LOCK指令前缀
浅论Lock 与X86 Cache 一致性
缓存一致性和LOCK指令前缀
汇编中的lock前缀