总线竞争
计算机术语
总线竞争(Bus contention)也称总线争用,是计算机设计中总线的不良状态——总线上的多个设备同时尝试在总线上放置值。
简介
大多数总线架构要求其设备遵循精心设计的仲裁协议,以使竞争的可能性可以忽略不计。但是,当总线上的设备有逻辑错误、制造缺陷或超出其设计速度运行时,仲裁可能会故障,从而导致竞争。在具有可编程内存映射的系统上控制映射的寄存器被写入非法值后,也可能发生竞争。
后果
竞争可能导致错误的操作,并且在异常情况下会损坏硬件——例如总线接线的熔断。
有时会通过缓冲内存映射设备的输出应对总线竞争。但是,已经观察到一个设备的高阻抗仍会干扰其他设备的总线值。目前来说,没有标准的解决方案来应对内存设备(如EEPROMSRAM)之间的数据总线争用。
解决方法
大多数小型计算机系统经过精心设计避免系统总线上的总线争用。它们使用一个称为总线仲裁器的设备控制哪个设备在目前可以驱动总线,因此总线竞争在正常运作中永远不会发生。
例如令牌环等部分网络也被设计为避免总线竞争,因此总线竞争在正常运作中永远不会发生。
大多数网络被设计为容忍网络上偶尔的总线争用。CAN总线ALOHAnet以太网等在正常运作中偶尔会遇到总线争用,但会使用一些协议(例如避免碰撞的多路访问、具有碰撞检测的载波侦听多路访问、自动重发请求)最小化争用时间,并重新发送在数据包冲突中被破坏的数据。
存储器映射输入输出
内存映射输入输出(英语:Memory-mapped I/O, MMIO,简称为内存映射IO),以及端口映射输入输出(port-mapped I/O, PMIO,也叫作独立输入输出(isolated I/O),是PC机在中央处理器(CPU)和外部设备之间执行输入输出操作的两种方法,这两种方法互为补充。除此之外,执行输入输出操作也可以使用专用输入输出处理器(dedicated I/O processors)——这通常是指大型电脑上的通道输入输出(Channel I/O),这些专用处理器执行自有的指令集
内存映射IO(不要和内存映射文件的输入输出混淆)使用相同的地址总线来寻址内存和输入输出设备(简称IO设备),前提是IO设备上的设备内存和寄存器都已经被映射到内存空间的某个地址。这样当CPU访问某个地址的时候,可能是要访问某一部分物理内存,也可能是要访问IO设备上的内存。因此,设备内存也可以通过内存访问指令来完成读写。每个IO设备监测CPU的地址总线,并且在发现CPU访问被分配到本设备的地址区域的时候做出响应,建立数据总线和相应设备寄存器之间的连接。为了实现CPU对MMIO设备的访问,相应的地址空间必须给这些设备保留, 并且不能再分配给系统物理内存。这可以是永久保留,也可以是暂时性的保留。通常来说X86架构都是永久保留的,而在Commodore 64中,由于采用了IO设备和普通内存之间的堆交换技术(bank switching),可以做到暂时性保留。
参考资料
最新修订时间:2022-08-25 16:00
目录
概述
简介
后果
解决方法
参考资料