新闻中心

EEPW首页>嵌入式系统>设计应用> 微处理器和多处理器片上系统MPSOC设计的新纪元

微处理器和多处理器片上系统MPSOC设计的新纪元

作者: 时间:2016-12-02 来源:网络 收藏


应用程序中的许多循环语句对一个数据阵列执行相同的操作,XPRES编译器可以将这些循环语句进行向量化,建立一条由多个相同执行部件并行执行多个数据项的指令。对Xtensa处理器增加单指令流多数据流SIMD指令与Tensilica的XCC C/C++编译器是一致的,该编译器能够将应用程序代码中的内循环展开并且进行向量化。通过向量化可以加速循环语句的执行,这通常和增强型指令内部SIMD运算部件的序号有关。

XPRES编译器采用的第三种加速程序代码执行的技术是Tensilica的FLIX(可变长度指令扩展)技术。FLIX指令是一种类似于融合和单指令流多数据流SIMD指令的多操作指令。然而,FLIX指令包括多个独立的操作,而融合和单指令流多数据流SIMD指令则均为相关多操作。FLIX指令中的每一个操作都是和其它操作互相独立的,XCC C/C++编译器将彼此独立的操作压缩成一条FLIX格式的指令,而这种压缩后的指令能够显著加速程序代码的执行速度。

采用可配置处理器进行多处理器SOC设计

在当今的应用中,很少只用一个处理器就能满足系统的性能指标,即使采用面向目标应用的可配置处理器也很难做到。然而,多处理器MP指令集、高带宽接口和小面积使得在一个片上系统SOC设计中可以集成多个可配置处理器。

片上系统SOC中处理器模块之间硬件互连机制的选择对系统性能和硅片成本产生很大影响,而且这些硬件互连机制必须直接支持多处理器MP系统设计的互连要求。消息传递软件通信机制直接影响到数据队列。类似地,共享存储器软件通信模式也影响到基于总线的硬件系统。可配置处理器可以提供系统以很大的灵活性,提供对共享设备和存储器进行访问所需的仲裁机制。共享存储器总线的基本拓扑结构有如下几种:

1. 通过通用处理器总线访问系统全局存储器:微处理器设计一个通用接口以便实现多种总线事务处理。在读操作时,如果处理器认为相应的数据不在本地局部存储器(根据地址或者高速缓存CACHE缺失进行判断),那么处理器必须要进行全局存储器访问。处理器请求总线控制权,当控制权得到应答后,处理器通过总线发送读操作的目标地址。相应的设备(例如,存储器或者输入/输出接口)对地址进行译码,然后通过总线对处理器所需要的数据进行传送,如图3所示。



图 3: 两个处理器通过总线共享存储器

当两个处理器通过总线对全局共享存储器进行访问时,一个处理器获得总线控制权对数据进行写操作,另一个处理器就必须稍后才能获得总线控制权以便进行读操作。按照这种方式,每个字传输需要两个总线操作事务周期才能完成。该方法需要适度的硬件支持,并且具有较高的灵活性,因为全局存储器和输入/输出接口通过公共总线进行访问。然而,对全局存储器的使用却不好根据处理器和设备的数量进行度量,因为总线拥塞会使得访问时间变长和不可预测。

2. 通过通用处理器总线对处理器本地局部存储器进行访问:可配置处理器可以允许局部数据存储器参与通用总线事务处理。这些处理器基本上是由本地的处理器使用,并且二者是紧密耦合的。然而,控制局部数据存储器的处理器可以按照总线从设备的方式进行操作,如图4所示。



图4: 一个处理器通过总线访问第二个处理器的局部数据存储器

第一个处理器和第二个处理器之间访问时间的不对称性可以保证push 通信,即当第一个处理器向第二个处理器发送数据时,它将数据通过总线写到第二个处理器的本地局部存储器。如果写操作经过缓冲器,那么第一个处理器不必等到写操作完成就可以继续执行后面的操作。因此,到第二个处理器数据传输的长时间延时就被隐藏了。

3. 通过局部总线访问多口局部存储器:当数据流在处理器之间双向传输且对时延要求比较严格时,那么对任务间通信而言,采用本地共享数据存储器通常是最好的选择。每个处理器使用自己的本地数据存储器接口来访问共享存储器,如图5所示。存储器可以有两个物理访问端口(每个时钟周期可以访问两次存储器),或者通过一个简单的仲裁器来控制。



图5:两个处理器共享局部数据存储器

直接互连的数据端口

处理器直接相连可以减少通信开销和时间。这种连接方式将数据从一个处理器的寄存器传送到另一个处理器的寄存器和执行功能部件。直接互连的一个简单例子如图6所示。当第一个处理器向输出寄存器写一个数值(通常作为计算的一部分)时,该值将自动出现在处理器的输出端口上。同样的数值可以立即输入到第二个处理器进行相应的数据操作。



图 6:处理器到处理器之间通过端口直接进行访问

数据队列

任务之间通信的最高带宽机制是数据队列的硬件实现。一个数据队列可以使系统获得每个时钟周期传输一次的数据速率,或者在宽操作数位数的情况下可以达到每秒10GB的传输速率(每个操作数几十个字节,时钟速率几百兆赫MHz)。生产者和消费者之间的握手信号隐含在处理器之间的接口和数据队列的头信息和尾信息之中。

专用处理器允许数据队列作为指令集扩展的一部分直接进行硬件实现。数据队列可以通过一条专门指令来说明,队列可以作为结果值的目的或者使用输入队列值作为源。这种形式的队列接口方式如图7所示,该队列允许用户建立一个新的数据值,或者每个队列接口使用一个时钟周期。


评论


技术专区

关闭