嵌入式系统/微处理器架构
本节的章节将讨论微处理器架构的一些基本知识。它们将讨论微处理器的许多功能是如何实现的,并将尝试指出每个功能对系统带来的某些缺陷(特别是速度下降和瓶颈)。
在计算机中,处理器通过数据总线连接到RAM。数据总线是一系列并行运行的线,它们可以将数据发送到内存,并从内存读取数据。此外,处理器必须将要访问的内存地址发送到RAM模块,以便能够对正确的信息进行操作。
在旧的微处理器中,以及在今天的一些低端版本中,内存总线是一个单一的总线,它将承载要访问的数据的地址,然后将承载数据的数值。将两种信号在不同的时间放到同一总线上,是一种称为“时分复用”的技术,简称为复用。复用内存总线的效果是,读写内存实际上需要两倍的时间:一半时间用于将地址发送到RAM模块,一半时间用于访问该地址处的數據。这意味着,在复用总线上,将数据移入和移出内存是一个非常昂贵的(在时间方面)过程,因此应尽量减少内存读/写操作。这也使得确保处理大型数据集的算法具有缓存效率变得很重要。
复用总线的反义词是解复用总线。解复用总线在一组线上具有地址,而在另一组线上具有数据。这种方案比复用系统快两倍,因此内存读/写操作可以更快地发生。
在现代高速微处理器中,内部CPU时钟的速度可能比同步微处理器系统其余部分的时钟速度快得多。这意味着需要访问处理器外部资源(例如RAM)的操作受到总线速度的限制,而不能达到最快的速度。在这种情况下,微处理器有两种选择:它们可以等待内存访问完成(慢),或者在等待内存访问完成时执行其他任务(快)。旧的微处理器和低端微处理器总是选择第一个选项(因此再次限制内存访问操作的数量),而更新的和高端的微处理器通常会选择第二个选项。
任何计算机,无论是大型PC还是小型嵌入式计算机,如果没有与外部世界交互的方式都是无用的。嵌入式计算机的I/O通信通常通过称为I/O总线的总线进行。与内存总线一样,I/O总线经常在同一总线上复用输入和输出信号。此外,I/O总线的运行速度比处理器慢,因此大量的I/O操作会导致严重的性能瓶颈。
不同的IO方法通常使用不同的总线。不幸的是,硬件设计人员也常常会作弊,用一个总线执行多个目的。这样做可以节省布局中额外的晶体管,并降低成本。例如,一个项目可以使用USB总线与附近的一些LED进行通信。这些不同的设备可能具有非常不同的通信速度。在编写IO总线控制时,请务必考虑到这一点。
在一些系统中,使用内存映射IO。在这种方案中,硬件从预定义的内存地址读取其IO,而不是通过特殊总线。这意味着您将拥有更简单的软件,但也意味着主内存将收到更多访问请求。
在本手册的后面部分,IO编程,我们将讨论IO总线的编程。