新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于SoC的X86到ARM二进制翻译和执行功能的系统设计

基于SoC的X86到ARM二进制翻译和执行功能的系统设计

作者:时间:2012-08-11来源:网络收藏

 ADD EAX,EBX

本文引用地址:http://www.eepw.com.cn/article/148618.htm

  SUB EAX,EBX

  因为这些指令的寻址方式一样,近似,只是操作码不一样,可以归并为一个状态,在某一状态内建立映射关系成为指令。

  考虑到AHB总线可能处于比较忙碌的状态,对于指令和出的指令分别设置2个FIFO。FIFO1和FIFO2各自有2个存储器,其中一个存储指令,另一个存储与指令对应的地址。对FIFO进行操作会同时对指令和地址进行操作,以保持指令和地址的对应。

  此外,核需要向解码模块发送信号,通过设置Communicate模块中的寄存器控制指令译码器的工作:

  设置指令的起始地址;设置指令的终止地址;设置ARM指令的初始存放地址;设置ARM指令复杂指令段的初始地址;设置使指令解码器开始工作的标志寄存器,高电平表示工作;判断指令解码是否结束,结束后向ARM核发送中断;ARM核接收中断信号后,将标志寄存器置低,模块结束本次工作。

  本文的中没有使用DMA对X86指令和ARM指令进行存取,而是由翻译模块主动进行读和写。因而有2个Master总线接口,通过AHB _1_1inteRFace读取X86指令,由AHB_2_1 interface将ARM指令写入RAM中。Communicate模块与总线的通信接口为Slave口,用于接收ARM核发送的4个地址,一旦接收到这4个地址,翻译模块中的start_flag信号置高,表示开始工作。

  3 片上总线结构

  在ARM 体系结构中,有Master和Slave这两个重要的概念。Master是ARM 体系结构中的主单元,他可以向总线发出请求并且对传输进行初始化,例如对存储器进行读/写操作,典型的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时,可以同时各自,有效提高系统的性能,且该总线结构的可扩展性强。同时根据系统工作的特点,对总线结构进行了优化,减小了总线的复杂度。


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭