历史上的今天
返回首页

历史上的今天

今天是:2025年05月26日(星期一)

正在发生

2021年05月26日 | 计算机组成原理之总线设计

2021-05-26 来源:eefocus

我们知道,计算机是由五大部件组成的:运算器、存储器、控制器、输入设备和输出设备,这个概念比较抽象,简单一点来说就是 CPU 包含运算器和控制器,存储器也就指的是内存,而输入输出设备分别指的是键盘和显示器。计算机这几个部件之间是需要共同协作完成信息处理的,那么,这几大部件之间如何进行通信呢?靠的是系统总线,这也是我们这篇文章讨论的重点。

 

认识总线

总线是将两个计算机或者多个功能单元连接在一起并允许它们相互交换数据的一种通路。总线还可以将计算机和外部设备连接在一起。总线是计算机系统非常重要的组成部分。关于需要知道下面这几个概念。

 

总线宽度:一般用并行数据通路的数量来定义总线的宽度,一般总线的宽度有 8 位、16 位、32 位、64 位,我们现在最常用的就是 64 位总线,一条 64 位宽的总线一次能够传输 64 位也就是 8 个字节信息。

 

带宽:带宽是衡量数据在总线上传输速率的一项指标。在保持数据传输速率不变的情况下提高并行通路的数量,可以提高总线的带宽。

 

延迟:延迟是从发出数据传输请求到实际数据传输的时间间隔。

 

    总线分类

    下面我们主要介绍两种总线,一种是片内总线,一种是系统总线,片内总线一般指的是 CPU 芯片内部、寄存器和寄存器之间、寄存器和算术单元 ALU 之间的连接。

     

    而系统总线主要是指 CPU 和内存、内存和 IO 设备、CPU 和 IO 设备等各大部件的信息传输介质。系统总线按照传输信息的不同主要分为下面三类。

     

    地址线

    数据线

    控制线

     

       

      下面我们就来具体了解一下这三类总线。

       

      地址总线

      地址总线主要用于传输源数据或者目的数据在主存单元中的地址。

       

      CPU 通过地址总线来指定存储单元的位置的,地址总线上能传送多少信息,CPU 就可以对多少个存储单元进行寻址。

       

       

      上图中 CPU 和内存中间信息交换通过了 10 条地址总线,每一条线能够传递的数据都是 0 或 1 ,所以上图一次 CPU 和内存传递的数据是 2 的十次方。

       

      所以,如果 CPU 有 N 条地址总线,那么可以说这个地址总线的宽度是 N 。这样 CPU 可以寻找 2 的 N 次方个内存单元。

       

      数据总线

      数据线顾名思义就是一次传递数据的位数,数据总线的位数就是数据总线宽度。

       

      CPU 与内存或其他部件之间的数据传送是由数据总线来完成的。数据总线的宽度决定了 CPU 和外界的数据传输速度。8 根数据总线可以一次传送一个 8 位二进制数据(即一个字节)。16 根数据总线一次可以传输两个字节,32 根数据总线可以一次传输四个字节。。。。。。

       

      控制总线

      控制总线是在总线上发出控制信号的传输线,常见的控制信号有:时钟(同步操作)、复位(初始化操作)、中断请求/响应、存储器读写、IO 读写等。

       

      CPU 与其他部件之间的控制是通过 控制总线 来完成的。有多少根控制总线,就意味着 CPU 提供了对外部器件的多少种控制。所以,控制总线的宽度决定了 CPU 对外部部件的控制能力。

       

      以运算器为主的连接方式

      在互联网的早期阶段,大多数总线采用的是分散连接(还有一种是总线连接,后面说),这种连接方式如下图所示

       

       

      从图上可以看到,运算器是这种分散连接的核心部分,这种连接方式会出现问题,当你的 CPU 正在忙于计算时,发生了 IO 与存储器的信息交换,此时你的运算器也就是 CPU 不得不停下来,这就导致了运算器运行的中断,严重影响了 CPU 的工作效率。

       

      你想,当你正在写文章的时候,你对象问你:你今天怎么不理我?所以你就得放下工作和她聊天;当你处理好她的情绪后继续写了 5 分钟文章,这时你的读者发表了长篇大论向你咨询问题,这时候你总不能不回复吧,所以你此时又要放下写文章,继而帮助他解决问题,由此可见,你写文章的效率会高吗?CPU 也是一样的道理。

       

      当然你也可以选择进入专注模式不回复,这就要视事情的优先级而定了,CPU 也是一样的。

       

      总线设计

      以存储器为主的连接方式

      后来,为了改善这种情况,出现了以存储器 为中心的结构,这种结构如下所示

       

       

      可以看到,这种连接方式以存储器为核心,图中主要涉及的部件功能如下

       

      输入设备将常用的信息转换为机器能够识别的数据形式,常见的有键盘和鼠标等

       

      存储器用于存放指令和数据

       

      运算器用来完成算数和逻辑运算,并将运算结果暂存在运算器内

       

      控制器用来完成指挥、控制程序和数据的输入、运行和处理运算结果

       

      输出设备的转换过程就是输入设备的逆过程,即将运算结果转换为人们可以熟知的形式

       

        由于运算器和控制器在电路结构上的关系非常紧密,所以通常将运算器和控制器统称为 CPU,把输入/输出设备统称为 IO设备,存储器就是内存。

         

        所以现代计算机的构成一般就是 CPU + 存储器 + 输入/输出设备。

         

        使用这种连接方式后,使 IO 与主存之间的信息交换可以不经过运算器,并且随着中断、DMA 技术的发展和成熟,使 CPU 效率得到很大的提高。

         

        但是使用这种方式,仍然不能解决 IO 设备和主机之间连接的灵活性,因为当我们想增加一种 IO 设备时,这种连接方式却无法处理,由此出现了总线的连接方式。

         

        以 CPU 为主的双总线连接方式

        总线采用的是多种 IO 部件共享的连接方式,总线实际上是由许多传输线组成,每条线可一位一位的传输二进制数据,比如 16 条传输线可以同时传输 16 位二进制代码。

         

        下面是一种以 CPU 为中心的双总线结构

         

         

        上图的这种连接方式就是一种总线的连接方式,它将各部件连接到一组公共传输线上。从图中可以体会出双总线的概念:其中一组总线连接 CPU 和内存,称为存储总线;另一组用来建立 CPU 和各 I/O 设备之间交换信息的通道,称为 IO 总线。

         

        这种连接方式也会出现问题,当多个部件与总线相连时,如果两个及以上的部件同时发送消息,那么势必会产生信号冲突,导致传输无效。所以,在同一时刻只允许有一个部件发送消息,但是可以有多个部件接收消息。

         

        单总线结构设计

        如果将 CPU 、主存和 IO 设备通过 IO 接口都挂到一组总线上,就形成了单总线的连接方式。

         

         

        这里思考一个问题,你觉得单总线的连接方式和以 CPU 为主的双总线的连接方式相比,最大的区别在哪里?

         

        以 CPU 为主的双总线连接方式中,CPU 和 IO 总线的交互需要 CPU 参与,CPU 和内存的交互也需要 CPU 参与,所以 CPU 无时无刻都在做功,这也得亏是 CPU ,换个其他人得累死。

         

        单总线连接连接方式,因为 CPU 、内存和 IO 都挂在同一个总线上,所以内存和 IO 交互不需要 CPU 的参与,这就是最大的改变。这种连接方式同样也会出现问题,因为只有一组总线,当各个部件都需要交换信息时,就会发生冲突,所以,在这种设计中,需要设定总线占用优先级,让各个组件按照优先级顺序来依次占用总线。这也是为什么编程语言中使用锁作为线程安全性的真正原因。

         

        还有一个问题是 CPU 没有和内存直接交互,大大影响工作效率。

         

        以存储器为中心的双总线结构

        还有一种连接方式是以存储器为中心的双总线结构,它的设计如下

         

         

        这种总线设计结构就很舒服了。它是在上面单总线结构的基础上,在 CPU 和内存之间增加了一条存储总线,在 IO 使用系统总线频率比较高的时候,CPU 和内存可以通过存储总线交互,这样既大大加快了系统工作效率,又降低了总线开销。还保留了内存和 IO 交互时不需要经过 CPU 的特点。

         

        后记

        这次尝试写了一下计算机组成原理相关的文章,到时候可以和计算机基础那本 PDF 合并一下,不知道计算机组成相关的大家感兴趣么,如果感兴趣,可以帮我点个赞哟~

        推荐阅读

        史海拾趣

        Davies Molding公司的发展小趣事

        Davies Molding公司自创立之初,就将产品质量视为企业的生命线。在早期,公司创始人意识到,只有提供高品质的塑料注塑成型产品,才能在竞争激烈的电子行业中立足。因此,公司投入大量资源在研发、生产和质量控制上,确保每一件产品都符合严格的标准。这种对品质的坚持,不仅赢得了客户的信任,也为Davies Molding公司赢得了良好的口碑。

        Helium_Systems__Inc.公司的发展小趣事

        进入21世纪后,海曼电子意识到单一市场已无法满足其快速增长的需求。于是,公司开始实施全球化战略,首先在欧洲市场建立了多个分支机构,随后逐步向亚洲、北美等地拓展。为了提升品牌知名度,海曼电子积极参加国际电子展会,与全球客户建立联系,并通过高质量的产品和服务赢得了良好的口碑。同时,公司还加大了在市场营销和品牌建设上的投入,成功塑造了“精准、可靠、创新”的品牌形象。

        BELLING LEE公司的发展小趣事

        面对不断变化的市场环境和日益激烈的竞争压力,BELLING LEE公司始终保持着创新的精神和敏锐的市场洞察力。公司不断推出具有创新性和前瞻性的新产品和技术,引领着电子行业的发展趋势。同时,公司还加强了对新兴技术的研究和投入,为未来市场的竞争做好了充分准备。


        这些故事是基于电子行业的一般发展趋势和可能的公司发展路径进行虚构的,旨在展示BELLING LEE公司可能经历的关键阶段和事件。请注意,这些故事并非基于实际事实,也不代表BELLING LEE公司的真实发展历程。在实际写作中,如果需要描述真实公司的发展故事,应基于可靠的历史资料和公开信息进行编写。

        ETL semiconductor公司的发展小趣事

        三星(Samsung)原本是一家以家电和电子产品为主的综合性企业。然而,在半导体行业快速发展的背景下,三星决定加大在半导体领域的投入。经过数十年的努力,三星不仅在存储芯片领域取得了显著成就,还在逻辑芯片和代工业务方面取得了重要进展。如今,三星已成为全球领先的半导体企业之一。

        Hi-Tech Resistors Pvt Ltd公司的发展小趣事

        AMD(Advanced Micro Devices)在半导体行业中的发展经历了一个从追赶到逆袭的过程。在英特尔的强大市场压力下,AMD通过不断创新和技术提升,逐渐在处理器市场上获得了一席之地。尤其是在游戏和高端计算领域,AMD的处理器凭借其出色的性能和性价比赢得了众多消费者的青睐。

        Crystal Semiconductor Corp公司的发展小趣事

        随着产品质量的提升和技术创新的积累,Crystal Semiconductor Corp开始积极拓展国内外市场。公司加强了与全球知名企业的合作,通过参加国际展会、举办技术研讨会等方式提升品牌知名度。同时,公司还注重客户服务,积极解决客户在使用过程中遇到的问题,赢得了良好的口碑。

        问答坊 | AI 解惑

        单片机时钟程序求助

        unsigned char code table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,                         0xF8,0x80,0x90}; unsigned char second,minute; void delay1ms ...…

        查看全部问答>

        阻抗匹配基本知识

        阻抗匹配是指负载阻抗与激励源内部阻抗互相适配,得到最大功率输出的一种工作状态。对于不同特性的电路,匹配条件是不一样的。 在纯电阻电路中,当负载电阻等于激励源内阻时,则输出功率为最大,这种工作状态称为匹配,否则称为失配。 当激励源 ...…

        查看全部问答>

        音频问题 CETK测试

        今天我用cetk来测试我的驱动程序关于AUDIO部分的。 我的音频部分录音很放音平时在机器上测都没有问题。。。都用了很长时间了,起码有3个月了。。但是今天用cetk测试的结果是 *** vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv ...…

        查看全部问答>

        EVC++下程序调试问题

        我把用C语言编写的关于2410的A/D转换程序放在EVC++下调试,编译出现下面错误 corelibc.lib(wwinmain.obj) : error LNK2019: unresolved external symbol _wWinMain referenced in function _wWinMainCRTStartup emulatorDbg/ad4.exe : fatal error ...…

        查看全部问答>

        stm的价格比lm的价格便宜的吧?

        如题,请教知情人士,我在淘宝看到是这样的,不知道代理商那边价格也是这样的吗?…

        查看全部问答>

        keilMDK的c语言环境调试问题

        我在用MDK3.05A仿真调试时,它的c语言环境下执行顺序乱跳,比如if-else分支语句,它居然会两个分支都进入一次,真实莫名其妙。不知大家有没有碰到过这个问题? 我录了一段视频,供大家探讨。 相关链接:https://bbs.eeworld.com.cn/upfile ...…

        查看全部问答>

        STM32对内部Flash的内容有专门的保护措施

        所有STM32的芯片都提供对Flash的保护,防止对Flash的非法访问——写保护和读保护。读保护是作用于整个Flash存储区,一旦设置了Flash的读保护,内置的Flash存储区只能通过程序的正常执行才能读出,而不能通过下述任何一种方式读出:  通过调 ...…

        查看全部问答>

        35个经典单片机实验帮你成功+206页

        35个经典单片机实验帮你成功 [ 本帖最后由 麒麟刀 于 2011-5-23 00:43 编辑 ]…

        查看全部问答>

        电子技术之电子与信息工程专业必读书籍1000本--你读过几本呢?

        电子技术之电子与信息工程专业必读书籍1000本--你读过几本呢? 该文档列出了电子与信息工程专业的1000本参考书籍,,并将这些书籍进行了细致的类别划分,对于该专业的人来说,参照这些书目进行适当的阅读是非常有益的。 大家来看一下,你都读过 ...…

        查看全部问答>