二进制翻译也是一种编译技能,它与传统编译器的不同在于其编译处理方针不同。传统编译器处理的是某一种高档言语,经过编译处理生成某种机器的方针代码。
二进制翻译是一种直接翻译可履行二进制程序的技能,能够把一种处理器上的二进制程序翻译到别的一种处理器上履行。它使得不同处理器之间的二进制程序能够很简单的互相移植,扩展了硬件/软件的适用规模,有助于打破处理器和支撑软件之间的互相扼制的局势。二进制翻译技能的长处为:不需求重编译源码就能够完结软件从旧渠道到新渠道的移植;快速为新机器供给软件,包含移植操作体系和编译器;充分使用新机器的特性优化代码;削减培训费用,由于运用的是相同的软件,所以不用在新渠道上从头培训职工;降低了多渠道软件的费用。
1 SOC架构规划
1.1 处理器的确认
通用处理器与硬件逻辑是SoC规划的干流架构。在一些需求很多数据处理的运用中,这样的架构并不能满足要求。实际上,由于不同的使命在很大程度上相互独立运转,能够将具有内涵履行并行性的使命分解为紧密联系的子使命,不同的内核能够履行不同的子使命,多核架构在1个周期内能够履行多个指令。这种并行处理使得整个体系的功能与运用单核处理器串行处理相同使命比较,有了很大改善。别的,多核架构规划能够复用现有的单核处理器作为处理器中心,然后能够缩短规划和验证周期,节约开发本钱,契合SoC规划的根本思路。多核架构是未来SoC开展的一个趋势。
该规划选用双核架构,选用今世盛行的处理才能较好的ARM处理器ARM7TDMI-S和ARM926EJ-S,ARM内核最大的优势在于高速度、低功耗。
ARM7TDMl-s具有3级流水线结构,支撑Win-dows CE,Linux等操作体系。ARM926EJ-S是ARM公司在2000年推出的功用最强壮的ARM9处理器,完结5级流水,它与外部通讯接口为双AHB总线结构,即指令AHB总线和数据AHB总线。该规划中ARMTDMI-S首要担任操控、操作体系渠道和使命的调度。ARM926EJ-S则首要担任各种使命的履行。
1.2 运用的总线规范
由于SoC中集成了很多的IP核,规划的关键在于怎么完结各IP模块之间的互连。现在,SoC中IP核的互连一般选用总线结构,经过音讯通讯。
选用ARM公司的AHB与APB为片上总线。AMBA总线体系结构是当时SoC体系规划结构规划的敞开规范,由于AMBA被越来越多的公司选用,已敏捷成为SoC结构和IP库开发的规范。
在详细完结时,选用AHB加APB的两级总线结构。AHB用来支撑高速设备,支撑多主从设备。多个主设备之间经过裁定机制确保优先级,从设备经过地址译码机制被选中,并呼应主设备建议的总线业务。APB用支撑依据寄存器拜访的低速设备。AHB与APB两条总线经过总线桥衔接在一起,完结两条总线之间的协议转化。图1为SoC的体系结构框图。
1.3 各IP在体系中的功用
除了两个处理器外,SoC中各IP核功用如下:翻译模块:完结将X86指令翻译成为ARM指令的功用。
SMI:外部存储与微处理器之间的桥梁,支撑RoM作为体系的非易失性存储介质,支撑片外SRAM作为体系的外围高速存储。
中止操控器:用来支撑体系内部与外部的中止操控,如中止电平/边缘触发、中止电平极性与中止使能等。
Internal Memory:片内SRAM,巨细为1 KB,但能够经过修正Verilog的描绘来改动其巨细。
Default Slave:用于当master拜访未定义的地址空间时,给出一个应对信号。
Retry Slave:是一个能够发生重试回应及等候指令的slave典范,若需求相似的模组,能够使用它来完结。
Watchdog:确保体系安全的监控模块,软件需在预订的时间内拜访相应的寄存器,不然硬件将发生内部信号自动复位。
GPIO操控器:用来支撑扩展外设,拓展SoC的运用规模。
RemapPause:首要分红两个处理单元,前者担任控管地址是否从头对应的机制,后者担任办理体系的省电形式。
Timer:定时器,支撑捕获、Matchout输出、外部时钟驱动。
2 X86到ARM二进制翻译模块
该规划运用的翻译模块经过编写Verilog HDL完结,能将部分X86指令翻译成ARM指令,完结了某些X86运用程序到ARM架构的移植。图2为解码器内部结构图。
该翻译模块首先从ROM中取出X86指令,翻译成ARM指令后存人RAM中,一切指令翻译完结后,翻译模块发生一个终端,使处理器履行RAM中的指令。即一切指令先翻译完结,处理器才履行,该翻译进程归于静态二进制翻译。其间Decoder是整个解码模块的中心,担任翻译指令。Decoder模块选用有限状况机操控数据通路的方法完结.依据指令的功用和寻址方法进行状况分类,然后输出ARM指令。例如,把寄存器寻址的算术指令可分为一类:
ADD EAX,EBX
SUB EAX,EBX
由于这些指令的寻址方法相同,功用近似,仅仅操作码不相同,能够归并为一个状况,在某一状况内树立映射联系翻译成为ARM指令。
考虑到AHB总线或许处于比较繁忙的状况,关于X86指令和翻译出的ARM指令别离设置2个FIFO。FIFO1和FIFO2各自有2个存储器,其间一个存储指令,另一个存储与指令对应的地址。对FIFO进行操作会一起对指令和地址进行操作,以坚持指令和地址的对应。
此外,ARM核需求向解码模块发送信号,经过设置Communicate模块中的寄存器操控指令译码器的作业:
设置X86指令的开端地址;设置X86指令的停止地址;设置ARM指令的初始寄存地址;设置ARM指令杂乱指令段的初始地址;设置使指令解码器开端作业的标志寄存器,高电平表明作业;判别指令解码是否完毕,完毕后向ARM核发送中止;ARM核接纳中止信号后,将标志寄存器置低,翻译模块完毕本次作业。
本文的SoC体系中没有运用DMA对X86指令和ARM指令进行存取,而是由翻译模块自动进行读和写。因而有2个Master总线接口,经过AHB _1_1interface读取X86指令,由AHB_2_1 interface将ARM指令写入RAM中。Communicate模块与总线的通讯接口为Slave口,用于接纳ARM核发送的4个地址,一旦接纳到这4个地址,翻译模块中的start_flag信号置高,表明开端作业。
3 片上总线结构
在ARM SoC体系结构中,有Master和Slave这两个重要的概念。Master是ARM SoC体系结构中的主单元,他能够向总线宣布恳求而且对传输进行初始化,例如对存储器进行读/写操作,典型的Master能够是CPU,DSP,DMA。Slave是ARM SoC体系结构中的从单元,典型的Slave为片上或许片外存储器,它们都有自己专一的地址规模。Master建议读/写操作时,在初始化中会给出读/写操作的地址,而地址译码器则依据这个地址决议哪个Slave被Master选中,然后相应的Slave做出相应。
在AHB体系中,若有2个Master常需求AccessBus,则体系的Performance必定会下降。为了处理这个问题。ARM提出了Multi-layer AHB,其根本设想是2个Master走不同的Bus去拜访Slave,假如拜访的Slave不同,则两个Master能够同步的进行Transfer。若互相拜访一个Slave,则依据优先级去判别要先处理谁的Transfer。
该总线结构运用了Multi_layerbus switch(BusMatrix)模块。AHB BusMatrix的规划能够分为3个部分:输入级、译码级和输出级。图3为该规划所运用的结构,其间,输入和输出的个数能够依据体系的Master和Slave灵敏调整。
能够看出,每个Layer都有一个译码器来决议Master要拜访哪一个Slave,经过多路选择器实Master和Slave之间的Transfer。。每个Slave口都有自己的裁定器,该裁定器运用固定优先级,最高优先级的Layer能够优先拜访对应的Slave。
跟着体系中Master和Slave的增多,Busmatrix模块的杂乱度也会明显增加,假如依照体系一切的Mas-ter和Slave的个数来确认输入/输出口的个数,Busma-trix将会十分杂乱,因而对体系结构进行优化变得十分必要。依据体系作业情况能够发现,翻译模块的Slave端口仅被ARM7核拜访,即向翻译模块存取指令所需的地址,操控其作业,该Slave能够看作是ARM7核私有的,而不被其他Master拜访。有些Slave只要在特别情况下才被拜访,因而能够将多个Slave看作一个Slave挂在BusMatrix上。优化后的SoC硬件架构如图4所示。
4 结 语
这儿给出了一种具有X86到ARM二进制翻译和履行功用的SoC体系。使用Multi-layer bus SWitch(BusMatrix)模块完结Multi-layer。总线结构,在多个核不拜访同一个Slave时,能够一起履行各自功用,有用进步体系的功能,且该总线结构的可扩展性强。一起依据体系作业的特色,对总线结构进行了优化,减小了总线的杂乱度。