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

发布者:温馨如家最新更新时间:2012-08-11 来源: 21ic 关键字:SoC  X86  ARM  二进制翻译 手机看文章 扫描二维码
随时随地手机看文章

二进制翻译是一种直接翻译可执行二进制程序的技术,能够把一种处理器上的二进制程序翻译到另外一种处理器上执行。它使得不同处理器之间的二进制程序可以很容易的相互移植,扩大了硬件/软件的适用范围,有助于打破处理器和支持软件之间的相互扼制的局面。二进制翻译技术的优点为:不需要重编译源码就可以实现软件从旧平台到新平台的移植;快速为新机器提供软件,包括移植操作系统和编译器;充分利用新机器的特性优化代码;减少培训费用,因为使用的是相同的软件,所以不必在新平台上重新培训员工;降低了多平台软件的费用。

  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的使用范围。

  Remap&Pause:主要分成两个处理单元,前者负责控管地址是否重新对应的机制,后者负责管理系统的省电模式。

  TImer:定时器,支持捕获、Matchout输出、外部时钟驱动。

  2 X86到ARM二进制翻译模块

  该设计使用的翻译模块通过编写Verilog HDL实现,能将部分X86指令翻译成ARM指令,实现了某些X86应用程序到ARM架构的移植。图2为解码器内部结构图。

  

 

  该翻译模块首先从ROM中取出X86指令,翻译成ARM指令后存人RAM中,所有指令翻译完成后,翻译模块产生一个终端,使处理器执行RAM中的指令。即所有指令先翻译完成,处理器才执行,该翻译过程属于静态二进制翻译。其中Decoder是整个解码模块的核心,负责翻译指令。Decoder模块采用有限状态机控制数据通路的方式实现.根据指令的功能和寻址方式进行状态分类,然后输出ARM指令。例如,把寄存器寻址的算术指令可分为一类:[page]

  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时,可以同时执行各自功能,有效提高系统的性能,且该总线结构的可扩展性强。同时根据系统工作的特点,对总线结构进行了优化,减小了总线的复杂度。

关键字:SoC  X86  ARM  二进制翻译 引用地址:基于SoC的X86到ARM二进制翻译和执行功能的系统设计

上一篇:基于ARM的PWM模块的超声波检测系统方案设计
下一篇:ARM指令里几个特殊符号

推荐阅读最新更新时间:2024-03-16 13:05

ARM笔记:移植串口xmodem协议
串口xmodem的移植比较简单,参考ymodem协议就行。 实验环境:Linux ubuntu 9.10(来自韦东山老师光盘自带虚拟机) 开发板: Jz2440(ARM9 S3C2440 NAND K9F2G08 SDRAM K4S561632 * 2) U-Boot: u-boot-1.1.6 烧写工具: OpenJtag 串口软件:SecureCRT 一、增加loadx命令 在cmd_load.c (路径:u-boot-1.1.6/common/cmd_load.c)中增加一条U_BOOT_CMD命令以支持xmodem。 找到loady命令的U_BOOT_CMD结构体,紧跟其后增加loadx的U_BO
[单片机]
arm LPC210X GPIO操作有关的寄存器
通常的名称 描述 属性 复位值 PORT0的地址和名称 IOPIN GPIO的管脚值。不管当前管脚的方向如何,都能从此寄存器读取GPIO的状态。 读/写 NA 0xE002 8000 IO0PIN IOSET GPIO置高电平寄存器。写1则相应的管脚输出高电平。 读/写 0x0000 0000 0xE002 8004 IO0SET IODIR GPIO方向设置寄存器。控制各个引脚的方向。 读/写 0x0000 0000 0xE002 8008 IO0DIR IOCLR GPIO置低电平寄存器。写1则相应的管脚输出低电平。 只写 0x0000 0000 0xE002 800C IO0CLR GPIO有两种工作方式
[单片机]
基于ARM和eCos的 嵌入式WEB服务器设计
  1 MDK RL—RTX和COrtex—M3概述   MDK开发套件源自德国Keil公司,是ARM公司目前最新推出的针对各种嵌入式处理器的软件开发工具。MDKRL—IUX是一个实时操作系统(RTOS)内核,完全集成在MDK编译器中。广泛应用于ARM7、ARM9和Cortex-M3设备中。它可以灵活解决多任务调度、维护和时序安排等问题。基于RL—I订X的程序由标准的C语言编写,由Real—View编译器进行编译。操作系统依附于C语言使声明函数更容易,不需要复杂的堆栈和变量结构配置,大大简化了复杂的软件设计,缩短了项目开发周期。   Cortex—M3是一个32位的核。它是首个基于ARMv7M架构,主要针对价格敏感但又具备
[单片机]
基于<font color='red'>ARM</font>和eCos的 嵌入式WEB服务器设计
ARM S3C4510B系统的异常中断机制解析
本文介绍了ARM S3C4510B系统的异常中断机制,包括异常中断的分类,响应与返回;中断处理程序的安装与调用;SWI,IRQ中断的实例与关键代码。 随着人们对于电子产品的要求越来越高,以80C51系列为代表的8位处理器系统开始面临越来越多的局限和挑战,人们对于高性能芯片和嵌入式功能的呼声也越来越高。16/32 位的处理器系统得到了前所未有的关注和重视。32位ARM体系系列处理器便是其中的代表。S3C4510B处理器是基于ARM7体系16/32位RISC处理器,内部集成了8KB的CACHE/SDRAM,内嵌EARTHNET控制器,拥有7种处理器模式和内部多线程和外部多处理器的处理器结构。在嵌入式系统中具有重要意义的异常中断技术
[单片机]
<font color='red'>ARM</font> S3C4510B系统的异常中断机制解析
搞定ARM指令集(二)
一、ARM 微处理器的指令的分类与格式 ARM微处理器的指令集是加载/存储型的,也即指令集仅能处理寄存器中的数据,而且处理结果都要放回寄存器中,而对系统存储器的访问则需要通过专门的加载/存储指令来完成。ARM微处理器的指令集可以分为跳转指令、数据处理指令、程序状态寄存器(PSR)处理指令、加载/存储指令、协处理器指令和异常产生指令六大类。下面是ARM微处理器的基本指令。 助记符 指令功能描述 ADC 带进位加法指令 ADD 加法指令 AND 逻辑与指令 B 跳转指令 BIC 位清零指令 BL 带返回的跳转指令 BLX 带返回和状态切换的跳转指令 BX 带状态切换的跳转指令 CDP 协处理器数据操作指令 C
[单片机]
32位ARM嵌入式处理器的调试技术
摘要:针对32位ARM处理器开发过程中调试技术的研究,分析了目前比较流行的基于JTAG的实时调试技术,介绍了正在发展的嵌入式调试标准,并展望期趋势。 关键词:嵌入式 调试 处理器 JTAG Nexus ARM 随着对高处理能力、实时多任务、网络通信、超低功耗需求的增长,传统8位机已远远满足不了新产品的要求,高端嵌入式处理器已经进入了国内开发人员的视野,并在国内得到了普遍的重视和应用。ARM内核系列处理器是由英国ARM公司开发授权给其他芯片生产商进行生产的系统级芯片。目前在嵌入式32位处理器市场中已经达到70%的份额。笔者在对三星公司的ARM7芯片技术调试的过程中,对这些高端嵌入式系统的调试技术进行了总结。 传统的调试工具及方
[应用]
ARM9(2440)对nand flash的读写操作
s3c2440对nandflash的操作(K9F2G08) nandflash在对大容量的数据存储中发挥着重要的作用。相对于norflash,它具有一些优势,但它的一个劣势是很容易产生坏块,因此在使用nandflash时,往往要利用校验算法发现坏块并标注出来,以便以后不再使用该坏块。nandflash没有地址或数据总线,如果是8位nandflash,那么它只有8个IO口,这8个IO口用于传输命令、地址和数据。nandflash主要以page(页)为单位进行读写,以block(块)为单位进行擦除。每一页中又分为main区和spare区,main区用于正常数据的存储,spare区用于存储一些附加信息,如块好坏的标记、块的逻辑地址、页内
[单片机]
高通CEO:希望与其他芯片制造商共同投资Arm
据金融时报报道,美国芯片制造商高通希望与其竞争对手一起购买 Arm 的股份,并创建一个财团,以保持英国芯片设计师在竞争激烈的半导体市场中的中立性。 日本企业集团软银在今年早些时候英伟达 660 亿美元的收购失败后,计划将 Arm 在纽约证券交易所上市。然而,鉴于该公司在全球科技领域的关键作用,此次 IPO 引发了对该公司未来所有权的担忧。 “我们对投资感兴趣,”高通首席执行官克里斯蒂亚诺阿蒙( Cristiano Amon)告诉英国《金融时报》。“这是一项非常重要的资产,对我们行业的发展至关重要。” 他补充说,如果进行收购的财团“足够大”,Arm 的最大客户之一高通可以与其他芯片制造商联手直接收购 Arm。这样的举动可
[半导体设计/制造]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved