开源软核处理器介绍

开源软核处理器介绍

 

以下内容摘自《步步惊芯——软核处理器内部设计分析》一书

 

 

      随着FPGA技术的发展,以及EDA软件工具的进步,如今的FPGA应用范围越来越广,以致出现了SOPC(System-On-a-Programmable-Chip:可编程片上系统)的概念,用可编程逻辑技术把整个系统放到一块可编程逻辑芯片上,其中可以包含处理器、DSP、RAM、ROM、总线控制器、UART控制器、以太网控制器、USB控制器、JTAG接口、FPGA编程接口等各种功能模块,且每个功能模块都可以设计成为IP(Intellectual Property)核,IP核指的是完成某种功能的设计模块。借助于IP核以及一些标准的总线接口,硬件设计开发者可以像搭积木那样搭建硬件平台。

      IP核有三种:软核、固核、硬核。软核指的是在寄存器级或者门级对电路功能用HDL(Hardware Description Language)进行描述,表现为VHDL或Verilog HDL代码,软核与生产工艺无关,不涉及物理实现,为后续设计留有很大的空间,增大了IP的灵活性和适应性。用户可以对软核的功能加以裁剪以符合特定的应用,也可以对软核的参数进行设置,包括总线宽度、存储器容量、使能或禁止某些功能块等。固核是完成了综合的功能块,通常以网表的形式提交给客户使用。硬核指的是以版图的形式实现的设计模块,它基于一定的设计工艺,不同的客户可以根据自己的需要选用特定生产工艺下的硬核。软核使用灵活,但其可预测性差,延时不一定能达到要求;硬核可靠性高,能确保性能,如速度、功耗等,可以很快投入使用。

      本书关注的并不是如何使用各种IP核搭建SOPC系统,我们所感兴趣的是由于采用了可编程逻辑器件设计各种硬件模块,由于使用了硬件编程语言,那么任何一个人都可以通过阅读源代码掌握各种功能模块的内部结构,比如可以掌握处理器内部的结构、原理,同样的,不需要高昂的代价、漫长的周期我们就可以在FPGA上设计自己的处理器,就像开源的操作系统将操作系统拉下神坛,开源处理器也揭开了处理器的神秘面纱,使得人人皆可谈论,正所谓:昔日王谢堂前燕,飞入寻常百姓家。

      使用HDL描述的处理器称之为软核处理器。各大FPGA厂商都有自己的软核处理器IP,Altera公司的NiosII,XILINX公司的MicroBlaze,但是这些IP核都不开放源代码。在此之外还有许多开源的软核处理器。本节列举部分开源软核处理器如下:

      1、OR1200

      OR1200来自于OpenRISC项目,OpenRISC项目的目标是建立一个免费、开源的计算平台,这个计算平台提供一个带DSP功能的RISC处理器架构,提供一些基于该架构的RISC处理器,以及免费、开源的开发工具、库、操作系统、应用程序。OpenRISC包括OpenRISC 1000和OpenRISC 2000两个子项目,OR1200是OpenRISC 1000项目的一个主要实现,最初发布于2001年,一直在持续改进,目前的稳定版本是Rel3,采用Verilog编写源代码。OR1200是一个32位的RISC处理器,采用Harvard结构(即分开的指令与数据缓存)、5级整数流水线(本书分析认为只有3级整数流水线),并且支持MMU,具备基本DSP功能。

      2、LEON系列

      LEON系列至今已发布到了LEON4,这是一种SPARC V8架构的处理器。最初的LEON1与LEON2由欧洲航天局发布,LEON3由GaislerResearch公司设计发布,2008年Aeroflex收购了Gaisler Research公司,并于2010年1月发布了LEON4,不过LEON4至今还没有公布源代码。LEON系列使用VHDL编写代码,其LEON2、LEON3系列都提供了一个容错版(Fault Tolerance),分别是LEON2-FT、LEON3-FT,这主要是因为LEON系列原计划是使用在航天器上,在航天器上的电子器件面对一个特殊问题,那就是太空中的各种高能粒子具有很高的动能,当这些粒子穿过航天器的电子器件时可能会影响半导体电路的逻辑状态,甚至对半导体材料造成永久损害。单个高能粒子对电子器件功能产生的影响称之为单粒子效应。其中,导致存储内容在0和1之间发生变化的现象,称之为SEU(Single Event Upset:单粒子翻转)。在容错版中通过一些逻辑结构纠正SEU带来的影响。LEON2采用5级流水线,LEON3采用7级流水线,同时增加了对多处理器的支持。LEON4又引入了静态分支预测、2级缓存。

      3、OpenSparc系列

      OpenSparc开始于2006年3月,Sun发布了OpenSparcT1的源代码,这是一个64bit的处理器,采用了SPARC V9架构,含有8个处理器核,之间通过crossbar通信,每个核支持4个硬件线程,所以共支持32个线程。此外,每个处理器核支持8K数据一级缓存、16K指令一级缓存,8个处理器核共享3M大小的2级缓存,含有4个DDR-II SDRAM控制器。2007年11月Sun发布了OpenSparcT2,采用的还是8核,但每个核支持8个线程,所以共支持64个线程,采用的是8级整数流水线,12级浮点流水线。

      4、S1 Core

      S1 Core是Simple RISC公司发布的,该项目基于OpenSparc,所以它也是采用SPARC V9的架构,其目的是简化OpenSparc,后者下载到FPGA上会占用很大的资源,简化的地方主要在于:只有1个64bit的处理器核,而不是8个。虽然做了简化,但根据1-CORETechnologies提供的数据显示在XILINX的Virtex-5上S1 Core需要使用37000-60000个LUTs,还是比较占用资源。

      5、LatticeMicro32

      LatticeMicro32是Lattice公司发布的32位RISC软核处理器,该处理器虽然由Lattice发布,但也可以使用在其他厂商的FPGA上,如Altera的FPGA,这就比NiosII有优势,NiosII只能使用在Altera的FPGA上。LatticeMicro32采用Harvard结构、32个通用寄存器、32个外部中断、可选的指令与数据缓存、Wishbone总线接口。提供了三种配置模式使得用户可以在占用资源与速度之间取舍:(1)基本模式:没有乘法器、没有缓存、多周期转换器;(2)标准模式:有乘法器、8K指令缓存、没有数据缓存、流水线转换器;(3)完全模式:有乘法器、8K指令缓存、8K数据缓存、流水线转换器。

      软核处理器还有其它很多种,本书不一一介绍,本书将对OR1200进行深入的剖析,至于为何选择OR1200作为剖析目标,笔者在序言中已明确,此处再重复一下:一通百通、融会贯通、取长补短、创新提高。

      在1-CORE Technologies公司的网站上对主要的软核处理器进行了一个比较,如表1.1所示。值的注意的是表1.1中所列出的软核处理器都是RISC处理器,在之前的介绍中,也多次提到过RISC,RISC是精简指令集计算机(Reduced Instruction Set Computer),与之相对的是CISC,即复杂指令集计算机(ComplexInstruction Set Computer)。在计算机的发展早期,人们使用汇编语言编程,偏好强大好用的指令集,处理器的设计人员于是将指令集设计得更强大、更灵活,并且那个时期的存储器既昂贵且速度慢,因此指令使用了变长编码,以节约存储空间,由于一条指令就能完成很多的功能,对内存的访问也减少了,这样也减少了缓慢的存储器访问对程序性能的影响。典型的CISC指令集就是Intel的x86指令集。上世纪70年代中期,人们发现在CISC指令集的各种指令中,其使用频率相差悬殊,大约有20%的指令会被反复使用,占整个程序代码的80%。而余下的80%的指令却不经常使用,在程序设计中只占20%,显然,这种结构是不太合理的。于是人们提出将指令集和处理器进行重新设计,减少那些使用不多的指令,只保留常用的简单指令,这样处理器就不需要浪费太多的晶体管去做那些很复杂又很少使用的功能,于是产生了RISC。1979 年美国加州大学伯克利分校提出了RISC的概念,RISC 并不只是简单地减少指令,更主要的目的是研究如何使计算机的结构更加简单合理以提高运算速度。其特点是指令长度固定、指令格式种类少、寻址方式种类少、大量使用寄存器。由于在RISC中使用的指令大多数是简单指令且都能在一个时钟周期内完成,因而处理器的频率得以大幅提升,同时易于设计流水线。RISC是计算机历史上的一个里程碑,以致有人开玩笑的把RISC定义为:1985年之后发布的所有处理器。

SPARC                                                                              Sun UltraSPARC II处理器 SPARC,全称为“可扩充处理器架构”(Scalable Processor ARChitecture),是RISC微处理器架构之一。它最早于1985年由升阳电脑所设计,也是SPARC国际公司的注册商标之一。这家公司于1989年成立,其目的是向外界推广SPARC,以及为该架构进行符合性测试。此外该公司为了扩阔SPARC设计的生态系统,SPARC国际也把标准开放,并授权予多间生产商采用,包括德州仪器、Cypress半导体、富士通等。由于SPARC架构也对外完全开放,因此也出现了完全开放原始码的LEON处理器,这款处理器以VHDL语言写成,并采用LGPL授权。 SPARC架构原设计给工作站使用,及后应用在升阳、富士通等制造的大型SMP服务器上。而升阳开发的Solaris操作系统也是为SPARC设计的系统之一,除Solaris外,NeXTSTEP、Linux、FreeBSD、OpenBSD及NetBSD系统也提供SPARC版本。 现时最新版本的SPARC为第8及第9版,在2005年12月,升阳方面宣布其UltraSPARC T1处理器将采用开放原始码方式。 开源CPU--OpenSparc T1简介     FPGA级别 2006年3月,Sun宣布开源化其多核心UltraSparc T1 CPU处理器设计,采用的是GNU通用公共许可证(GNU GPL license)。之前Sun已经公开了"Hypervisor"API规范,允许各公司将Linux、BSD 及其他操作系统移植到UltraSparc T1平台。 Sun是业界首家将复杂的硬件设计使用GNU GPL许可进行发布的公司,而此举也将为UltraSparc T1处理器增加曝光度,并吸引开发人员为该平台开发软硬件解决方案。 该硬件设计的开源发布包括64-bit UltraSparc T1的Verilog硬件描述语言源代码,验证套装和模拟模型,ISA规范及Solaris 10 OS虚拟镜像。T1处理器的代号为“Niagara”,于去年发布并应用于Sun的T1000/T2000服务器中。 Sun目前推出了4、6、8核心的CPU版本,且每核心最多支持4线程,即总共最多32线程。T1基于Sparc V9架构,每核心集成16KB指令缓存和8KB主数据缓存,整个处理器共享3MB L2缓存。“OpenSparc T1”芯片设计,验证套装,架构和性能模型工具已经发布在http://www.opensparc.net网站。Sun还发布了“Cool Tools”,其中包括优化多线程CPU性能的各种程序以及CMT编程及描绘工具。 OpenSparc T1处理器的主要特征包括: 8个Sparc V9处理核心,每核心4线程,共计32线程 每处理核心16KB一级指令缓存,共128KB; 每处理核心8KB一级数据缓存,共64KB; 3MB二级缓存,4-way bank,12向关联,各核心共享; 4个DDR2内存控制器,每通道位宽144bit,总带宽峰值25GB/s; IEEE754兼容浮点单元(FPU),各核心共享; J-Bus输入输出接口,峰值带宽2.56GB/s,128bit多元地址/数据复用总线。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值