RISC指令集众核处理器功能验证与实现
riscv添加指令原理 概述及解释说明
riscv添加指令原理概述及解释说明1. 引言1.1 概述本文将介绍RISC-V添加指令的原理,并对其进行概述和详细解释。
随着计算机科学和技术的发展,人们对计算机架构的需求也越来越多样化。
RISC-V作为一种开放且可扩展的指令集架构,在满足高性能、低功耗等基本要求的同时,还提供了添加指令的灵活性。
1.2 文章结构文章将按照以下顺序进行叙述:首先给出RISC-V简介,包括它的体系结构概述、指令集特点以及指令格式介绍。
接着,我们会详细探讨指令添加的原则和方法,包括需求分析、原则和思路以及具体的方法和步骤。
然后,我们将重点介绍RISC-V指令扩展模块的设计与实现,包括硬件架构设计方案、软件支持和编译器扩展以及功能验证方法与实验结果分析。
最后,我们对整个研究做出总结,并展望了在RISC-V架构中添加指令的意义与前景。
1.3 目的本文旨在向读者传达关于RISC-V添加指令原理的相关知识。
通过介绍RISC-V 的基本概念和特点,以及指令添加的原则和方法,读者将能够深入了解如何在RISC-V架构中添加自定义指令。
此外,本文还将介绍RISC-V指令扩展模块的设计与实现,使读者对硬件架构、软件支持和功能验证等方面有更全面的了解。
通过阅读本文,读者将能够掌握如何扩展RISC-V指令集的技术,并对未来RISC-V架构发展趋势有所预测与展望。
2. RISC-V 简介:2.1 RISC-V体系结构概述RISC-V是一个开放且免费的指令集架构(Instruction Set Architecture,简称ISA),它由加州大学伯克利分校的研究团队开发。
RISC-V体系结构是基于经典的精简指令集计算机(Reduced Instruction Set Computer,简称RISC)原则设计的。
与其他商业和专有指令集相比,RISC-V具有自由、灵活和可定制化的特点。
该架构主要包括标准指令集(RV32I、RV64I等)和扩展指令集(如乘法、除法扩展等)。
基于RISC-V指令集的BOOM处理器验证分析
基于RISC-V指令集的BOOM处理器验证分析发布时间:2022-10-25T03:38:53.698Z 来源:《科技新时代》2022年10期作者:黄瑞华[导读] 随着RISC-V指令集的出现,获得各大企业的青睐,得到广泛应用。
但作为一个新的精简指令集,其处理器验证却存在很大问题。
广州市声讯电子科技股份有限公司 510000摘要:本文简要分析BOOM验证方法与处理器优化验证目标,重点强调BOOM处理器浮点执行单元验证,并以BOOM处理器核内验证作为切入点,对BOOM处理器验证流程、指令集模拟器协同仿真、BOOM处理器验证平台设计以及BOOM处理器验证结果分析等方面进行研究,期望能够为相关人员提供参考。
关键词:BOOM处理器;RISC-V指令集;验证引言:随着RISC-V指令集的出现,获得各大企业的青睐,得到广泛应用。
但作为一个新的精简指令集,其处理器验证却存在很大问题。
而对BOOM处理器验证进行研究分析,则能为开展BOOM处理器验证提供依据,继而为加强处理器验证提供便利。
1.BOOM验证方法与处理器优化验证目标1.1BOOM验证方法1.1.1验证层次验证层次按照整个芯片硅前的层次来进行划分[1]。
通常情况下会根据模块级、子系统和芯片系统级来开展划分。
其中模块级验证的重点为检测代码语法、语义和代码功能,现阶段主要通过第三方软件来对其进行检查,以此来确保代码语法的正确性、代码当中的变量能否实现初始化、代码是否能够完成综合。
同时在对代码语法进行检查时,还要结合设计说明和设计人员以及验证人员进行沟通交流,来对其进行检测,从而消除设计缺陷,使其能够平稳、有序地进行功能验证。
此外利用数据信号、控制信号以及地质信号等数据信息,可以对设计功能进行检查,判断其是否符合设计标准,而且通过大量随机测试可以最大程度上减少仿真测试工作量,保障检测结果的准确性和可靠性。
最后还要对代码覆盖率和功能覆盖率开展统计,从而增加设计的可信度。
一文详解risc-v指令集
一文详解risc-v指令集RISC-V是一种开放源代码的指令集架构,旨在为各种类型的处理器设计提供统一的标准。
该指令集由加州大学伯克利分校的RISC-V项目组于2010年开始开发,并于2014年发布了第一个正式版本。
RISC-V指令集的设计原则是简洁、灵活和可扩展,以满足不同应用场景下的需求。
RISC-V指令集架构采用了经典的精简指令集计算机(RISC)设计思想,即通过减少指令集的复杂性来提高处理器的执行效率。
RISC-V 指令集包括了基本指令集(RV32I、RV64I和RV128I)、整数乘除指令集(RV32M、RV64M和RV128M)、浮点数指令集(RV32F、RV64F和RV128F)、向量指令集(RV32V、RV64V和RV128V)以及特权指令集(RV32P、RV64P和RV128P)等多个扩展。
用户可以根据实际需求选择不同的指令集扩展,以实现不同级别的性能和功能。
RISC-V指令集的特点之一是支持定制化。
用户可以根据自己的需求扩展指令集,添加新的指令,并通过软件工具链来支持新指令的编译、汇编和调试。
这使得RISC-V可以灵活适应不同应用场景下的需求,如嵌入式系统、服务器、高性能计算等。
RISC-V指令集还支持虚拟内存管理。
通过使用页表和地址转换技术,RISC-V可以实现虚拟内存的管理和访问控制,提高系统的安全性和可靠性。
同时,RISC-V还支持多种异常和中断处理机制,以应对不同的错误和事件。
RISC-V指令集的设计注重了能效。
通过简化指令集和增加硬件支持,RISC-V可以提供高性能的同时降低功耗。
此外,RISC-V还支持多核处理器的设计,可以实现更高的并行计算能力。
RISC-V指令集的开放源代码特性使得其具有广泛的社区支持和生态系统。
用户可以方便地获取到相关的文档、工具和软件库,以及参与开源社区的讨论和开发。
这为RISC-V的推广和应用提供了良好的基础。
总的来说,RISC-V指令集架构是一种开放、灵活、定制化的设计,适用于各种处理器和应用场景。
RISC-VISA学习笔记(1)指令集介绍及基本指令集RV32Iv2.0
RISC-VISA学习笔记(1)指令集介绍及基本指令集RV32Iv2.0(⼀)RISC-V指令集介绍 RISC-V指令集是UC Berkley ⼤学设计的第五代开源 RISC ISA, V 也可以认为是允许变种(Variations)和向量(Vector)向量实现,数据的并⾏加速功能也是明确⽀持⽬标,是专⽤硬件发展的⼀个重要⽅向。
RISC ISA相对于成熟的指令集来说有开源、简捷、可扩展、和后发优势(没有历史包袱,可以绕过很多弯路,也不需要考虑兼容历史指令集)等。
指令集分为基本部分和扩展部分,基本部分的指令集所有硬件实现都必须有这⼀部分实现,⽽扩展部分则是可选的。
扩展部分⼜分为标准扩展和⾮标准扩展。
例如,乘除法、单双精度的浮点、原⼦操作就在标准扩展⼦集中。
“I” 基本整数集,其中包含整数的基本计算、Load/Store和控制流,所有的硬件实现都必须包含这⼀部分。
“M” 标准整数乘除法扩展集,增加了整数寄存器中的乘除法指令。
“A” 标准操作原⼦扩展集,增加对储存器的原⼦读、写、修改和处理器间的同步。
“F” 标准单精度浮点扩展集,增加了浮点寄存器、计算指令、L/S指令。
“D” 标准双精度扩展集,扩展双精度浮点寄存器,双精度计算指令、L/S指令。
I+M+F+A+D 被缩写为 “G” ,共同组成通⽤的标量指令。
在后续ISA的版本迭代过程中,RV32G和RV64G总是保持不变。
基本RISC-V ISA具有32位固定长度,并且需要32位地址对齐。
但是也⽀持变长扩展,要求指令长度为16位整数倍,16位地址对齐。
32位指令最低2位为“11”,⽽16位变长指令可以是“00、01、10”,48位指令低5位位全1,64位指令低6位全1。
任何长度的指令,如果所有位全0或全1,都认为是⾮法指令,前者跳⼊填满0的储存区域,后者通常意味着总线或储存器损坏。
另外,RISC-V默认⽤⼩端储存系统,但⾮标准变种中可以⽀持⼤端或者双端储存系统。
riscv指令集指令
riscv指令集指令RISC-V是一种基于精简指令集(RISC)原则的开源指令集架构(ISA)。
其设计理念注重简洁、高效和易于定制,使得RISC-V架构能够广泛应用于各种处理器设计。
RISC-V指令集包括以下部分:1.基础指令集:定义了一系列基础的算术、逻辑、移位和数据传输等指令。
这些指令是RISC-V处理器实现各种计算和控制功能的基础。
2.控制流指令:用于实现程序中的条件判断、循环和函数调用的指令。
3.浮点指令:用于支持浮点数运算的指令,通常用于科学计算、图形处理等领域。
4.原子操作指令:用于实现多处理器或多核环境下的原子性操作,确保数据一致性和并发控制。
5.扩展指令:为了满足特定应用需求,RISC-V允许用户或第三方厂商开发扩展指令集。
这些扩展可以增强处理器在特定领域或应用上的性能。
6.虚拟化扩展:为了支持虚拟化技术,RISC-V还定义了一系列虚拟化相关的指令。
在硬件实现方面,RISC-V指令集由于其开放的特性,使得基于RISC-V指令集的处理器核可以为不同的应用场景进行定制,例如用于高性能计算、嵌入式系统、物联网设备等。
同时,由于其开源的特性,开发者可以自由地使用、修改和分发RISC-V处理器核的设计,进一步促进了其在各个领域的应用和创新。
总结:RISC-V指令集是一种基于精简指令集原则的开源指令集架构,其设计注重简洁、高效和易于定制。
RISC-V指令集包括基础指令集、控制流指令、浮点指令、原子操作指令、扩展指令和虚拟化扩展等部分,适用于各种处理器设计,并能够满足不同应用场景的需求。
由于其开放的特性,RISC-V正在成为处理器设计领域的重要选择之一。
riscv 验证流程 -回复
riscv 验证流程-回复RISC-V是一种基于开放架构的指令集架构(ISA),在计算机领域中得到了广泛的关注和应用。
为了确保RISC-V架构的正确性和功能性,验证流程是非常关键的。
本文将介绍RISC-V验证流程的各个步骤和方法,帮助读者了解RISC-V架构验证的过程和重要性。
1. 确定验证目标和需求:在进行RISC-V验证之前,首先需要明确验证的目标和需求。
这包括确定要验证的子系统、功能和性能要求等。
例如,可以验证整个处理器核心,或者只验证特定的指令集扩展。
通过明确验证目标,可以更好地制定验证计划和策略。
2. 设计验证方法和环境:验证方法是指确定如何验证RISC-V系统或子系统的过程。
常见的验证方法包括模拟、仿真、形式化验证和硬件验证。
模拟验证使用软件模拟器来验证指令集的正确性和功能性,仿真验证使用硬件描述语言(HDL)进行功能验证,形式化验证使用形式化工具进行数学推理验证,而硬件验证则直接在实际硬件上进行验证。
验证环境是指为验证流程创建的软硬件环境。
可以使用专门的验证工具和平台来创建,并将测试用例和验证数据加载到该环境中以进行验证。
验证环境需要精确模拟RISC-V系统的特性,包括处理器核心、内存和外设等。
3. 开发测试用例:测试用例是验证流程中的核心部分,用于对RISC-V架构进行功能性和性能的测试。
测试用例应覆盖RISC-V指令集架构中的各种指令和操作,并针对不同的用例设计测试场景。
测试用例应包括正常情况的测试、边界情况的测试和异常情况的测试等。
测试用例可以通过手动编写或自动生成。
手动编写测试用例需要对RISC-V 指令集架构有深入的了解,并编写相应的程序代码。
自动生成测试用例则可以利用特定的工具和方法,根据验证目标和需求生成测试用例。
4. 运行验证:在验证环境中,加载测试用例和验证数据,然后运行验证流程。
验证流程会模拟或仿真RISC-V系统的行为,并记录测试用例的执行结果。
流程中可能包括多个阶段,如初始化、执行测试用例、记录结果和清理等。
OpenRISC处理器内的性能计数器的设计和实现
26卷 第11期2009年11月微电子学与计算机M ICROEL ECTRON ICS &COMPU TERVol.26 No.11November 2009收稿日期:2008-10-26基金项目:上海市浦江人才计划(07pj14061)OpenRISC 处理器内的性能计数器的设计和实现吴 ,祝永新(上海交通大学微电子学院,上海200240)摘 要:性能计数器(Performance Counter )位于处理器内部,负责对特定触发事件进行计数,可以实时反馈处理器内部性能参数.OpenRISC 1200是一种免费的开源处理器核.通过处理器内部设计在OpenRISC 1200处理器核内设计实现了可配置性能计数器单元.并基于该新处理器核建立了SOPC 系统,在FPG A 上验证了新核的应用和性能计数器单元的功能.关键词:性能计数器;OpenRISC ;FPG A ;处理器内部设计中图分类号:TN4 文献标识码:A 文章编号:1000-7180(2009)11-0034-05Design and Implementation of Perform ance Countersin an Open RISC ProcessorWU Xian ,ZHU Y ong 2xin(School of Microelectronics ,Shanghai Jiaotong University ,Shanghai 200240,China )Abstract :Performance counters inside the processor can be used to report real 2time values of processor performance metrics through counting the predefined events.OpenRISC 1200is a free open source processor core.In this paper ,we integrate configurable performance counters unit into OpenRISC 1200processor core.An SOPC system is built based on this new processor core.On the FPG A implementation of the new processor core ,applications are executed on this new processor core and the functions of performance counters are verified.K ey w ords :performance counter ;OpenRISC ;FPG A ;internal design of processor1 引言性能计数器(Performance Counter )位于处理器内部,主要功能是在处理器运行程序时实时反馈处理器内部的性能参数.性能计数器在高性能计算程序优化和多核处理器架构设计中有着广泛的应用,其优点是结构简单,基本不占用CPU 负载,实时反馈数据.在处理器多任务化多核化的发展趋势下,性能计数器越来越受到各大处理器厂商的青睐,是高性能处理器不可或缺的功能单元.OpenRISC 1200是由硬件开源组织OpenCores 开发和维护的开源处理器核,可以很容易地从OpenCores 的网站上免费获得其Verilog 源代码和设计应用工具链.由于其完全开放性和免费性,近年来国内外许多个人和组织使用OpenRISC 1200处理器核做了很多应用方面的研究,但是目前对核内功能扩展方面的研究还是一个空白.文中在该领域进行了尝试,在对OpenRISC 1200核内结构和体系架构进行深入研究的基础上,进行了处理器核内功能单元的扩展设计,实现了可配置的性能计数器单元(Programmable Performance Counters Unit ).并为该性能计数器单元上添加了指令级访问接口和基于J T AG 协议的调试接口.最后基于这个含有性能计数器单元的新处理器建立了SOPC 系统,并且用X ilinx公司的Virtex II pro 开发板的FPG A ,对该系统和可配置性能计数器单元进行了功能测试和验证.2 OpenRISC 简介OpenRISC 开源项目的目标是设计一种针对各种芯片级和系统级应用的,能够通过配置实现各种用途的免费开源的处理器软核.目前这个项目已经推出了基于OpenRISC 1000体系结构(Architec 2ture )的OpenRISC 1200开源处理器.OpenRISC 1000是OpenRISC 家族的第一个体系结构标准,目标是高性能的网络通信,嵌入式应用,自动化控制以及便携式计算机.这个体系结构标准对OpenRISC 系列的寻址方式、寄存器集、指令集、中断模式及其处理、存储管理、调试接口、电源管理以及应用程序接口都做了相应的规定[1].所有的涉及处理器的设计和改进都必须遵守这一标准.文中所使用的OpenRISC 1200软核,就是基于这一体系结构标准设计出来的.这个开源处理器软核由Verilog 编写,实现了CPU/DSP 中枢单元、直接映射的数据和指令缓存、基于TLB 的内存管理单元、功耗管理单元、嘀嗒计时器、外接调试接口、中断及其处理单元以及Wishbone 总线接口[2].核心单元CPU/DSP 单元是一个支持32位指令集、32位操作数的RISC 处理器,包含指令处理单元、通用寄存器单元、读写单元、整数操作流水线、MAC 单元、系统控制单元等功能单元.其内部结构如图1所示.图1 CPU/DSP 内部结构其中指令处理单元负责取指和译码操作,以及指令地址的管理,保证在分支操作和中断操作中的精确取指操作;通用寄存器单元内包含32个32位的通用寄存器,作为CPU 内部数据通路的存储器;读写单元负责通用寄存器组与CPU 外部总线的数据传输和设备控制.整数操作流水线负责实现算术操作、比较操作、逻辑操作和旋转平移操作;MAC 单元执行数字信号处理中的乘加操作,包含一个全流水的累加器,可以每个周期读入一条MAC 指令;系统控制单元则负责处理数据指令接口外其他所有的信号连接.系统控制单元中集成了一个十分重要的单元———特殊寄存器组.整个处理器系统的功能状态设置,以及所有的非指令操作都需要通过设置特殊寄存器组来实现.另外OpenRISC 1200支持J TA G 调试模式,系统外部主机可以通过J TA G 远程调试协议读写特殊寄存器组从而实现对Open 2RISC 1200系统的实时调试.3 可配置性能计数器单元的设计性能计数器(Performance Counter )也有叫做性能监控计数器(Performance Monitor Counter ),属于处理器内的特殊寄存器组,负责在处理器运行程序过程中对其内部某些特定操作进行计数,配合相应的外部访问手段例如扩展指令或者外部调试接口,设立时间断点可以很容易地获得处理器的性能参数,例如CPU 中各单元的使用次数和频率.由于它位于CPU 内部,运行速度要与CPU 一致而且占用处理器核上宝贵的面积和资源,所以设计时要考虑尽量地使用较小的资源占用比和较高的运算速度下实现既定功能.采用可配置性能计数器设计方案可以较大地提高资源的使用效率和可扩展性.CPU 中包含丰富的时序电路和逻辑电路,在为CPU 设计扩展单元时,会遇到很多时序和逻辑的问题[3],下面就详细讲述性能计数器的实现过程.3.1 设计原理可配置性能计数器单元的设计可以分成两个功能单元:一个是地址编解码单元,确保性能计数器与外界的数据交换;另一个部分是可配置计数器单元,实现模式控制(监控事件选择)和计数器功能.其整体结构如图2所示.图2 可配置性能计数器单元模块图53 第11期吴,等:OpenRISC 处理器内的性能计数器的设计和实现地址编解码单元实现地址的译码解码功能.为了兼容OpenRISC1000的特殊寄存器访问指令,地址映射严格遵循OpenRISC1000体系结构规定的特殊寄存器地址规范.OpenRISC处理器是支持核的设计扩展的,OpenRISC1200中预留了许多可扩展特性.文中正是利用了其中一部分闲置的特殊寄存器地址空间作为性能计数器的访问地址.最后该地址编解码单元支持OpenRISC1000的特殊寄存器访问指令对这16个32位寄存器进行精确访问.另外通过添加部分代码,还实现了这部分特殊寄存器对系统外部J TA G调试接口访问的支持.可配置计数器单元主要包括模式选择寄存器、触发事件解码器和性能计数器寄存器.模式选择寄存器、触发事件解码器协作完成性能计数器单元的可配置功能.模式选择寄存器(PCMR)负责存储系统初始化时对可配置性能计数器单元的配置状态,支持汇编代码初始化,或者外围主机J TA G调试接口初始化.其数据输出传递给触发事件译码器.触发事件解码器接受模式选择寄存器的输出信号,进行译码,产生相应的触发事件的使能信号.性能计数器寄存器(PCCR)是整个设计的核心部分,负责采集系统的使能信号.其基本功能是一个32位的计数器,驱动时钟使用CPU时钟.要使这个计数器具有性能计数器功能还需要添加计数使能信号.计数使能信号在监控事件触发的时钟周期下为高电平,其他时间段为低电平,可以通过监听控制触发事件的使能信号来实现.但这里需要解决两个问题,单指令延续多周期问题和不同流水线使能信号的同步问题.在处理器中,为了资源利用和功耗的角度考虑,各触发事件的使能信号往往没有强制翻转操作的.所以在多周期指令或者是中断操作时,都会产生单指令延续多周期的情况.这种情况下使能信号往往会保持几个几十个甚至更多的周期,这种信号会与连续多个时钟周期执行相同指令产生的使能信号相混淆.为了消除这一干扰,建立了辅助状态机保证在每条指令地址产生的时候才会产生一个持续一个周期的计数脉冲信号,由触发事件的使能和这个计数脉冲信号来共同控制计数器使能信号.另外,对于同一指令在取指(IF)、译码(ID)、执行(EX)、访存(M EM)、写回(WB)各个阶段都会产生相应的使能信号.这些使能信号产生在流水线的不同级上,它们的有效周期也不同.为了实现个流水线级上的使能信号协同工作,必须事先对这些使能信号进行同步.例如前面提到的计数脉冲信号有效周期在流水线的取指阶段,需要与译码阶段的使能信号协同工作,将计数脉冲信号缓存一个周期再进行逻辑操作.这样做会带来一个问题,那就是计数器可能会有小于流水线长度(不大于5个)的延时,但是相对于计数器得计数总量来说这个延时基本可以忽略.3.2设计规范整个设计参照OpenRISC1000体系结构的特殊寄存器设计规范[2]建立了8个32位的性能计数器寄存器(PCCR)和8个32位的模式选择寄存器(PCMR).其访问地址有16位,其中组地址Grp#为5位,组内寄存器地址Reg#为11位,具体地址分布如表1所示.表1 性能计数器的寄存器地址寄存器名称Grp#Reg#用户模式超级模式描述PCCR0-PCCR770-7只读读/写性能计数器寄存器PCMR0-PCMR778-15不可读写读/写模式控制寄存器该寄存器组可以通过特殊寄存器访问指令l.mfspr和l.mtspr进行访问,支持J TA G调试接口的最高优先级访问.文中选择了15种处理器动作做为触发事件.模式选择寄存器触发事件编码采用独热码,配置模式选择寄存器各bit位标识和触发事件列表2、表3所示,其中配置模式选择寄存器(PCMR)某一位置1其余位置0,就可以配置相应的的性能计数器寄存器(PCCR).表2 配置模式选择寄存器各bit位标识Bit0123456789101112131415-31标示IF LA SA DCM ICM ALUOP LSUOP MACOP JOP BOP AOP LOP SROP DC MA Reserved Reset000000000000000XR/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W Read Only 63微电子学与计算机2009年表3 模式选择寄存器触发列表寄存器位触发事件IF 获取指令操作LA 读数据操作SA 写数据操作DCM 数据缓存缺失ICM 指令缓存缺失ALUOP ALU 操作L SUOP L SU 操作MACOP MAC 操作JOP 跳转操作BOP 分支操作AOP 加减法运算操作LOP 逻辑运算操作SROP 平移或翻转操作DC 双周期指令MA访存操作4 测试和验证为了验证可配置性能计数器单元的功能,建立了基于新的处理器核的SOPC 系统作为验证平台.系统硬件包含改装后的OpenRISC 1200处理器核、WISHBON E 总线、J TA G 调试接口、UAR T 接口和片上内存[425].整个系统的结构如图3所示.图3 测试用SOPC 系统结构外围PC 工作站使用ISE 工具通过Xilinx 公司的J TA G 接口配置FP G A ,实现硬件逻辑功能.使用ChipScope 返回FP G A 上采集电路级时序信息.另外工作站使用J TA G 远程调试协议通过OpenRISC 的J TA G 接口采集系统级的数据参数.4.1 J TA G 远程调试接口J TA G 远程调试接口由J TA G 硬件控制器和J TA G 远程通信驱动程序组成,支持系统外主机远程调试.J TA G 硬件控制器主要由TAP 控制器、J TA G 指令控制器两部分组成.前者负责控制基本的J TA G 读写操作.后者主要负责选择J TA G 扫描链和J TA G 高级指令的实现[6].J TA G 远程通信驱动程序提供三种基本的访问函数:static void jtag set chain (int chain );static void jtag write reg (int regno ,unsigned long data );static unsigned long jtag read reg (unsigned int regno );通过调用这三种基本访问函数可以实现J TA G 高级命令,从而以最高优先级方便地读写Open 2RISC 系统中CPU 的特殊寄存器和总线上的设备(包括RAM ),从而实现主机的远程调试.4.2 功能验证为检验性能计数器的正确性和可靠性和应用性,进行了严格的仿真和功能验证.首先通过了ISE 和ModelSim 对该系统进行了细致的电路仿真工作.然后就是系统运行在FP G A 上的功能测试,主要是执行指令测试和运行程序测试.执行指令测试目的是检验CPU 执行单条指令时,相应的功能单元的工作状况.方法是让CPU 工作在单步模式下,通过使用ChipScope 检验触发事件时相关信号的变化和J TA G 接口直接获得触发事件发生时特殊寄存器的值.通过这些数据信息来分析运行相关指令下计数器的运行状况.运行程序测试考察新的处理器核和集成的性能计数器在运行程序过程中正确性和可靠性.综合科学性和可实现性,采用了两类基准测试程序(bench 2mark )[7]:一类是较短的汇编级循环测试程序,一类是标准的应用程序.采用汇编级循环测试程序的优点是可以任意组合需要测试的指令,可以在特定的功能测试选用针对性很强的测试程序,缺点是不能客观反映真实应用程序的运行.通过运行包含能产生触发事件的指令的循环程序,统计性能计数器在时间轴上的计数结果来分析实际测试结果和验证的误差,从而得出性能计数器在大运行负荷下的可靠性.图4是运行某一汇编级循环测试程序,从J TA G 远程调试程序上返回的各性能计数器寄存器(PCCR )的数据,图中可以看到从初始化系统到运行到采样点提取计数器数据,共执行了495条指令,其中5条为双周期指令,访存操作123次,其中82次为读操作,AL U 运算207次,其中加(减)操作124次.另外还有两个性73 第11期吴,等:OpenRISC 处理器内的性能计数器的设计和实现能计数器寄存器没有配置,这两个计数器就不工作.图4 通过J TA G 调试程序返回性能计数器的值标准的应用程序,考察添加性能计数器之后系统应用性的影响和性能计数器在实际应用中的表现.主要是检验带性能计数器的OpenRISC 处理器是否还能正常地运行应用程序,同时其上的性能计数器是否正确工作.以下是在OpenRISC 处理器上运行UAR T 接口控制程序,并启用了性能计数器监控L SU (读写控制单元)操作和AL U (数值处理单元)操作的功能的应用实例.通过J TA G 远程调试接口将UAR T 接口控制程序下载到片上RAM ,进行系统初始化配置后运行程序.在主机的超级终端上顺利实现了主机和OpenRISC 系统之间的通信,完成了从超级终端读取字符经UAR T 总线传输到片上系统,进行数值加1后再输入到主机的超级终端的功能.系统功能一切正常,性能计数器也能正常工作,以下是系统运行在单步模式下的各采样点性能计数器的数据,如表4所示.表4 各采样点返回的性能计数器的数据采样点(步长)取指操作L SU 操作(读写外设)ALU 操作1(25)268112(50)5227153(100)10266204(200)203142315(400)414277506(800)8315051147(1600)166410272478(3200)333120255149(6400)666440271047其中采样步长实际上是指处理器成功执行指令的次数.当出现流水线重装操作(例如系统初始化或分支预测失败),会延长单步的周期,出现一步内执行多次取指操作.这也是取指操作数量大于步长的原因.将触发事件计数进行对数操作,按采样点顺序做了触发事件比较折线图,如图5所示.图5 触发事件计数(取自然对数)的比较由图5可见,除了第一采样点(步长为25)中AL U 操作多于L SU 操作外,之后L SU 操作所占的比例不断增大,最后AL U 操作和L SU 操作稳定在一定比例上.通过分析UAR T 接口控制程序编译后的机器指令可以得到如下结论.最初的几十条指令为系统初始化指令,其中AL U 操作和L SU 操作基本相同.之后进入UAR T 接口控制程序的初始化程序段时,由于UAR T 接口控制程序需要频繁访问UAR T 硬件单元进行寄存器初始化配置(通过WISHBON E 总线,需要L SU 单元产生访问地址)导致L SU 操作比例不断提升.最后UAR T 稳定工作,CPU 在监听UAR T 硬件单元和处理传输过来的数据上取得了平衡.所以最后AL U 操作和L SU 操作稳定在一定比例上.但是总的来说,UAR T 接口控制程序是一个读写外设操作多于算术运算操作的程序.实验结果和理论相符.5 结束语通过ISE 自带的综合工具和时序分析工具分析处理器裸核(不带外设和调试模块).新核可以在xc2vp30FP G A 上稳定运行到77.236MHz ,使用了2792个Slice.标准的OpenRISC 1200最高运行频率为76.677MHz ,占用2594个Slice.而实现过程中对冗余部件的部分剪裁后,最高运行频率上升了0.7%,而占用资源提升了7.6%.达到预期设计资源占用少,不影响CPU 工作主频的目的.未来的工作开展将围绕性能计数器在多核设计优化上的应用和对更高层软件的支持上.参考文献:[1]Authors of OpenCores.Open RISC 1000architecture man 2ual[EB/OL ].(2004-07-14)[2008-10-20].http ://.(下转第42页)某些高速通信中,通过对报文头采用较低速率发送,而报文中的载荷部分采用较高速率发送的方法来节能[7].不同的应用环境下,网络性能的需求也不同,因此需要将节能措施和相应的QoS需求结合起来,设计最适合该网络综合性能指标要求的协议将是以后研究的重点方向.参考文献:[1]Dongkyun K im,G arcia Aceves J J.Power-aware routingbased on the energy drain rate for mobile Ad Hoc networks[C]//Proceedings of the Eleventh International Confer2ence/IEEE International Conference on Computer Com2 munications and Networks.New Y ork:ACM Press,2002: 565-569.[2]G arcia J E,K allel A,Kyamakya K,et al.A novel DSR-based energy-efficient routing algorithm for mobile Ad-hoc networks[C]//Vehicular Technology Conference/ IEEE58th.New Y ork:ACM Press,2003:2849-2854. [3]Dongkyun K im,G arcia-Luna-Aceves J J,G arcia-Lu2na-Aceves,et al.Routing mechanisms for mobile Ad hocnetworks based on the energy drain rate[J].IEEE Transac2 tions on Mobile Computing,2003(2):161-171.[4]Laura Marie Feeney,Martin Nilsson.Investigating the en2ergy consumption of a wireless network interface in an Ad Hoc networking environment[C]//Twentieth Annual Joint Conference of the IEEE Computer and Communica2 tions S ocieties.New Y ork:ACM Press,2001:1548-1557.[5]许力,王敏强,郑宝玉.一种新的基于DSR的移动自组网节能路由策略[J].计算机工程,2004,30(11):43-44.[6]郑少仁,王海涛,赵志峰,等.Ad Hoc网络技术[M].北京:人民邮电出版社,2005:70-80.[7]张书奎.Ad Hoc网络中一种随机化分布式QoS路由算法[J].微电子学与计算机,2007,24(3):45-48.作者简介:周 倩 女,(1983-),硕士研究生.研究方向为无线网络通信.史杏荣 男,(1946-),教授.研究方向为无线网络通信协议和系统结构、都市无线网、下一代Internet以及信息安全.(上接第38页)[2]Damjan Lampret.Open RISC1200IP core specification[EB/OL].(2001-09-06)[2008-10-20].http:// .[3]高健,陈杰.一种基于数字信号处理器的媒体处理器结构及设计[J].微电子学与计算机,2007,24(4):7-10.[4]Patrick Pelgrims,Tom Tierens,Dries Driessens.Basiccustom open RISC system hardware tutorial[EB/OL].(2004-6-11)[2008-10-20].http://www.open2 .[5]Patrick Pelgrims,Tom Tierens,Dries Driessens.Basiccustom open RISC system software tutorial[EB/OL].(2003-10-23)[2008-10-20].http://www.open2.[6]朱艳玲,朱怡安,王云岚.基于硬件性能计数器的编译器性能测试与分析[J].微电子学与计算机,2008,25(3): 193-196.[7]Morris Mano M,Charles R,K ime.逻辑与计算机设计基础[M].3版.北京:机械工业出版社,2008.作者简介:吴 男,(1984-),硕士研究生.研究方向为RISC处理器体系结构、嵌入式系统.祝永新 男,(1969-),副教授.研究方向为计算机体系结构、嵌入式系统、处理器微体系结构、医疗电子、并行处理和多媒体.。
基于RISC架构的多线程微处理器设计及验证
基于RISC架构的多线程微处理器设计及验证微处理器的硬件多线程架构是计算机体系结构中一种重要的线程级并行方式,其以增加少量逻辑资源为代价,将单核映射为多个逻辑核,使处理器可以同时执行多个线程的指令。
本文基于MIPS32指令集,设计了单核微处理器,在此基础上设置多个线程上下文环境以及共享流水线,将单核映射为四个逻辑核,使多个线程的指令可以在处理器内部交叉执行。
本文在对同时多线程结构深入研究与总结的基础之上,设计了一个适用于RISC处理器核心的多线程微结构,用硬件实现可以同时运行四个线程指令的设计目标,处理器取指部件设计四个程序计数器,通过线程控制器完成各个线程的取指切换,每个线程拥有独立的通用寄存器文件,设计多线程流水线寄存器用于保存当前周期各线程的执行结果,设计协处理单元以实现其精确异常处理,多线程流水级执行部件中的译码器、功能部件ALU和访存控制器采用共享方式,处理器所有模块均使用Verilog硬件描述语言设计完成。
针对多线程软核微处理器构建测试用例,完成了指令功能与系统功能的定向测试,并且搭建基于UVM验证方法学的SystemVerilog验证平台进行大规模随机验证,构造覆盖点数据完成了功能覆盖率统计分析。
该硬件多线程微处理器内核在TSMC 40nm工艺下使用Design Compiler完成逻辑综合,其运行时钟频率达到550MHz,同时运行四个线程的指令使处理器的吞吐率和并行度大幅度提升。
32位RISC处理器软核的设计与验证
32位RISC 处理器软核的设计与验证( Potato-I)使用说明文档1 CPU 流水线级数及各级功能IF :取指令级,是从ROM 中读取指令,并在下一个时钟沿到来时把指令送到ID 级的指令缓冲器中。
ID :指令译码级,对IF 级来的指令进行译码,并产生相应的控制信号。
整个CPU 的控制信号都是在这级上产生。
EX :执行级,对操作数进行算术或逻辑操作,此外LOAD ,STORE 指令所用的RAM 访问地址也是在EX 级上实现。
MEM :存储器访问级,只有在执行LOAD 、STORE 指令时对存储器进行读写,但对其他指令只起到缓冲一个周期的作用。
WB :回写级,把指令执行的结果回写到寄存器文件中,写入寄存器文件的数据来自于MEM 级上的缓冲值或来自于MEM 级上的存储器。
2指令集及编码格式2.1指令集:NOP,ADD,ADC,SUB,SUBC,AND,OR,NOT,ADDI,ANDI,ORI,NOTI,LSL,LSR,ASR,ROR,ROL,STR,LDR,BTC,JUMP,JUMPR,JUMPL,RET 。
2.2指令编码格式例:ADD R1,R2,R3;在上面的加法指令中 OP=2、DS=1、S1=2、S2=3,对应的机器码为:32’b000010_00001_00010_00011_XXXXXXXXXXX;2) ADDI,ANDI,ORI,NOTI例:ADDI R4,R8,5;其中 OP=1、DS=4、S1=8、IMM=5,对应的机器码为:32’b000001_00100_01000_0000000000000101;3) LSL,LSR,ASR,ROR,ROL例:LSL R4,R3, 5;其中OP=C、DS=4、S1=3、IMM=5;(IMM=shift amount),对应的机器码为:32’b001100_00100_00011_XXXXXXXXXXX_00101;4) STR例:STR R1,R2,5; //[R1+5]=R2;其中OP=11、DS=X、S1=1、S2=2、IMM=5 (S2指定的寄存器内容存储到[S1+IMM]地址处),对应的机器码为:32’b010001_XXXXX_00001_00010_00000000101;5) LDR例:LDR R1,R2,5; //R1=[R2+IMM]其中OP=12、DS=1、S1=2、S2=X、IMM=5 ([S1+IMM]地址处的内容存储到DS指定的寄存器中),对应的机器码为:32’b010010_00001_00001_XXXXX_00000000101;6) BTC例:BTC_EQ 5; // 如果有符号数相等,则转移到PC+5地址处其中OP=13、DS=5、IMM=5 (DS=CONDITION,关于CONDITION见decode.v 模块中的generatingbranch signal段),对应的机器码为:32’b010011_00101_000000000000000000101;7) JUMP,JUMPL例:JUMP 5;其中OP=14、IMM=5,对应的机器码为:32’b010100_00000000000000000000000101;7) JUMPR,RET例:RET R4; // PC=R4;其中OP=17、DS=4 (PC值被修改成DS指定的寄存器的内容),对应的机器码为:32’b010111_00100_XXXXXXXXXXXXXXXXXXXXX;3 软核的verilog实现Potato-I RISC处理器IP核由ALU.V、 DECODE.V、 PC_GEN.、FORWARD.V、 IO_BUS.V、RAM.V、 ROM.V、 WRITE_BACK.V、 REGFILE.V、 REG_PIPELINE.V、CPU.V等模块组成。
OpenRISC处理器寄存器级仿真与实现的开题报告
OpenRISC处理器寄存器级仿真与实现的开题报告
题目:OpenRISC处理器寄存器级仿真与实现
摘要:
OpenRISC是一个开源RISC处理器项目,其架构可用于FPGA,并得到了广泛的应用,如系统级图像识别,具有低功耗和高性能等优势。
本项目的目的是实现OpenRISC处理器的寄存器级仿真和实现,包括设计和测试RISC处理器的CPU核心,实现CPU支持的指令集,并将CPU 核心实现的代码映射到FPGA开发板上进行验证。
本项目的实现思路如下:
1. 了解OpenRISC处理器的整体结构和指令集
2. 基于Verilog HDL语言设计OpenRISC处理器的寄存器级仿真模型,并进行测试和验证
3. 实现OpenRISC处理器的指令集,并将CPU核心实现的代码映射到FPGA开发板上进行验证
4. 集成CPU和其他IP核,形成一个完整的系统,较大地提高系统性能和功能
本项目的预期目标是:
1. 实现OpenRISC处理器的寄存器级仿真模型和指令集
2. 验证OpenRISC处理器的功能性和正确性
3. 映射OpenRISC处理器的CPU核心实现代码到FPGA开发板并进行验证
4. 将OpenRISC处理器集成到完整的系统中
其中,第一和第二个目标是本项目的核心目标,第三个目标是本项目的扩展目标,第四个目标则是本项目的长期目标。
关键词:OpenRISC处理器;寄存器级仿真;指令集;Verilog HDL。
riscv指令集测试用例 -回复
riscv指令集测试用例-回复RISC-V指令集测试用例指的是用于验证RISC-V处理器是否正确执行指令的一系列测试案例。
RISC-V指令集是一种开放源代码的指令集架构,其设计简洁、灵活,并且尽可能地遵循RISC原则。
为了确保RISC-V处理器的正确性和稳定性,测试用例起到了至关重要的作用。
本文将详细介绍RISC-V指令集测试用例的必要性、种类、编写方法以及如何应用测试用例进行指令集测试。
一、RISC-V指令集测试用例的必要性在设计和实现RISC-V处理器时,正确地执行指令是至关重要的。
通过设计和应用测试用例,可以验证处理器是否正确地执行RISC-V指令。
测试用例能够帮助开发人员发现潜在的bug和错误,并进行修复,以确保处理器的正确性和稳定性。
此外,测试用例还可以帮助开发人员评估处理器的性能和功耗,并进行相应的优化。
二、RISC-V指令集测试用例的种类RISC-V指令集测试用例可以分为功能测试、性能测试和冒烟测试三种类型。
1. 功能测试:功能测试用例旨在验证处理器是否正确执行各种RISC-V指令。
该类测试用例涵盖了指令集的所有基本功能,包括算术操作、逻辑操作、数据传输等等。
功能测试用例的设计需要覆盖指令集中的各个方面,并考虑到各种边界情况和异常情况,以验证处理器的鲁棒性。
2. 性能测试:性能测试用例旨在评估处理器的运行速度和效率。
该类测试用例通常包括大量的指令以及一些复杂的算法和计算任务,用于测试处理器的处理能力和响应能力。
性能测试用例的设计需要考虑到处理器的内存访问速度、指令周期等因素,以准确评估处理器的性能。
3. 冒烟测试:冒烟测试用例是一种简单的测试方法,旨在快速验证处理器的基本功能。
该类测试用例通常只包含一些简单的指令,用于检查处理器的启动是否正常、基本功能是否可用。
冒烟测试用例对于在处理器设计初期进行快速验证非常有用。
三、编写RISC-V指令集测试用例的方法编写RISC-V指令集测试用例需要深入了解RISC-V指令集的架构和规范,并根据实际需求进行设计。
RISC指令集众核处理器功能验证与实现
RISC指令集众核处理器功能验证与实现朱博元;刘高辉;李政运;安述倩【摘要】众核技术已成为当前处理器体系结构发展的必然趋势,如何对众核处理器设计进行有效而充分的验证,成为当今IC设计验证领域的研究热点之一,也是众核处理器芯片能否成功流片的关键因素之一。
目前工业界采用基于仿真的验证作为主要的验证方式,重点介绍了以覆盖率为导向的RISC众核处理器的功能验证环境的整体设计,提出了“被动式”的验证思想,并采用“软硬件协同验证”的策略,最终达到每条指令都比对通过的验证目标,辅以后期阶段所引入的时序验证策略和功耗评估策略,完整地提出了一套芯片验证平台搭建和验证功能实现的方法流程。
%Multi-core technology has become the inevitable trend of current processor architecture. It is an efficient and sufficient functional verification of the multi-core design that has become one of the hot points in IC design and verifica-tion fields, and also one of the key factors to the success final tape-out. Different from the common verification pattern based on emulation, this paper pays more attention in highlighting the overall functional verification environment design driven with the coverage functional verification strategy to verify RISC multi-core processor, and putting forward the idea of“passive authentication”with hardware and software co-verification strategy, ultimately achieves the goal of“single instruction comparison”. Timing verification and po wer evaluation strategies are also introduced in the later validation stage, providing a complete verification solution for the RISC multi-core processor.【期刊名称】《计算机工程与应用》【年(卷),期】2014(000)021【总页数】5页(P54-58)【关键词】众核处理器;功能验证;覆盖率;时序验证;功耗评估【作者】朱博元;刘高辉;李政运;安述倩【作者单位】西安理工大学自动化与信息工程学院,西安 710048;西安理工大学自动化与信息工程学院,西安 710048;中国科学院计算技术研究所计算机体系结构国家重点实验室,北京 100190;中国科学院计算技术研究所计算机体系结构国家重点实验室,北京 100190【正文语种】中文【中图分类】TP302.7随着集成电路制造工艺的进步和处理器设计水平的不断提高,众核技术已成为当前处理器体系结构发展的必然趋势。
RISC结构的IP核验证与测试
RISC结构的IP核验证与测试慧聪电子元器件商务网2003-12-09 9:14:44摘要:以一个8位的RISC体系的CPU核为例,介绍了如何将IC设计中的IP Core和FPGA两项技术结合起来,并给出了IP核模块的验证与测试的方法。
关键词:RISC结构;IP 核;验证与测试1 引言在电子设计日趋复杂的今天,使用IP 核已成为设计师不可或缺的重要手段。
有资料表明,在芯片的设计中,IP应用在整个芯片规模中的比重已超过 50%,Dataquest的专家预计到2005年该比重将上升至80%。
在因特网上有很多可免费下载的IP核,这些核只提供行为级Verilog或VHDL代码,它们可以通过行为级仿真。
如何将这些IP核引入自己设计中,如果能对它们进行验证、测试和集成,就可以加速SoC设计。
一般情况下,我们要从代码纯化、代码覆盖率分析、设计性能和面积分析、可测性分析、功耗分析5个方面进行考虑。
其中,代码纯化是指在代码设计中及完成后进行自定义的、IEEE标准的、设计重用的、可综合性和可测试性等方面的规则检查;代码覆盖率分析是研究仿真中的测试矢量是否足够了;设计性能和面积分析是在设计逻辑综合过程中分析所设计的RTL所能达到的性能和面积要求;可测性分析是IP设计重用中的关键技术,如何保证IP的高测试覆盖率,如何保证IP在集成到SoC中后的可测试性,是该阶段分析的主要目标,所以在IP实现之前,要检查IP设计中是否违反了可测性设计规则;低功耗分析是SoC的重要衡量指标。
我们在IP设计阶段就需要将IP功耗参数进行精确估计,并进行相应的功耗优化设计。
本文以Microchip公司生产的Pic16C5x系列微处理器指令兼容的IP核为例,重点讨论其实现过程中的验证、测试方面的问题,最后该设计在Xilinx Spartan2系列中的Xc2s150下载成功。
2 RISC架构下IP核的实现2.1 IP核应用总体方案设计SoC是开发智能家电(IA)产品的主要方法,而 RISC体系的嵌入式处理器(embeddedprocessor)则是SoC芯片的核心。
嵌入式可配置RISC核的设计及验证的开题报告
嵌入式可配置RISC核的设计及验证的开题报告一、题目嵌入式可配置RISC核的设计及验证二、研究背景与意义随着现代社会信息技术的不断发展,嵌入式系统的应用越来越广泛,包括智能家居、智能物流、基于车联网的智能交通等。
而嵌入式系统中最基本也最重要的组件是中央处理器(CPU),因此对于嵌入式系统的研究和开发,对于CPU的研究和开发显得尤为重要。
传统的嵌入式CPU设计主要依赖于ASIC设计方法,这种方法的局限性在于硬件的不可更改性、制造成本高以及后期研发维护困难。
而可配置RISC核提供了一种新的CPU设计方法,这种方法可以根据嵌入式系统需求进行定制和配置,实现快速开发和低成本制造,并且可升级性和可维护性也更好。
本研究旨在探究可配置RISC核的设计及验证方法,构建一个实用的RISC核设计平台,以及针对该平台的验证方法和技术。
三、研究内容1. 可配置RISC核的体系结构设计针对嵌入式系统的处理需求和特点,设计一种基于RISC指令集的可配置RISC核体系结构,包括控制器、操作器、寄存器、存储器、中断控制等。
2. 可配置RISC核的编译工具链开发基于RISC指令集开发可配置RISC核的编译工具链,包括编译器、汇编器、链接器、调试工具等,使得可配置RISC核可以被应用程序所使用。
3. 可配置RISC核的验证方法和技术针对可配置RISC核的验证,根据可配置性和定制化的需求,开发相应的设计规范和验证方法。
优化验证策略,提高系统测试效率,降低测试成本和测试时间。
4. 可配置RISC核设计平台的构建构建可配置RISC核设计平台,实现功能模块的配置和组装,支持不同粒度的可配置性。
四、研究方法1. 系统分析方法:通过对嵌入式系统的需求和特点进行分析,确定可配置RISC核的体系结构和设计要求。
2. ASIC设计方法:采用ASIC设计方法,对可配置RISC核的体系结构进行设计,使用Verilog HDL编写代码,进行RTL级设计和仿真,生成门级网表文件。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基金项目:国家自然科学基金项目(No.61173007);国家自然科学基金青年基金项目(No.61100015);作者简介: 朱博元(1986-),男,硕士研究生,主要研究方向:IC 前端设计、计算机体系结构;刘高辉(1968-),男,副教授,硕士生导师,主要研究方向:数字移动通信、集成电路设计;李政运(1986-),男, 硕士,主要研究方向:CPU 小核设计、片上多核系统设计;安述倩(1986-),女, 硕士研究生,主要研究方向:计算机体系结构。
RISC 指令集众核处理器功能验证与实现朱博元1,刘高辉1,李政运2,安述倩2ZHU Boyuan 1, LIU Gaohui 1, LI Zhengyun 2, AN Shuqian 21.西安理工大学自动化与信息工程学院,陕西 西安,7100482.中国科学院计算技术研究所,计算机体系结构国家重点实验室,北京,1001901. School of automation & information engineering, Xi’an University of Technology, Xi’an, Shaanxi, 7100482. State Key Laboratory of Computer System Structure, Institute of Computing Technology, Chinese Academy of Sciences, Beijing, 100190ZHU Boyuan, LIU Gaohui , LI Zhengyun, AN Shuqian. Functional verification and implemen-tation of RISC multi-core processorAbstract : Multi-Core technology has become the inevitable trend of current processor architecture; it is an efficient and sufficient functional verification of the multi-core design that has become one of the hot points in IC design and verification fields, and also one of the key factors to the success final tape-out. Different from the common verification pattern that based on emulation, this paper pays more attention in highlighting the overall functional verification environment design droved with the coverage functional verification strategy to verify RISC multi-core processor, and putting forward the idea of "passive authentication" with hardware and software co-verification strategy, ultimately achieve the goal of "single instruction comparison".Timing verification and power evaluation strate-gies are also introduced in the later validation stage, providing a complete verification solution for the RISC multi-core processor.Key words : Multi-Core Processor; Functional Verification; Coverage; Timing Verification; Power Evaluation;摘 要:众核技术已成为当前处理器体系结构发展的必然趋势,如何对众核处理器设计进行有效而充分的验证,成为当今IC 设计验证领域的研究热点之一,也是众核处理器芯片能否成功流片的关键因素之一。
目前工业界采用基于仿真的验证作为主要的验证方式,本文重点介绍了以覆盖率为导向的RISC 众核处理器的功能验证环境的整体设计,提出了“被动式”的验证思想,并采用“软硬件协同验证”的策略,最终达到每条指令都比对通过的验证目标,辅以后期阶段所引入的时序验证策略和功耗评估策略,完整地提出了一套芯片验证平台搭建和验证功能实现的方法流程。
关键词:众核处理器;功能验证;覆盖率;时序验证;功耗评估;文献标志码:A 中图分类号:TP302.7 doi :10.3778/j.issn.1002-8331.1211-00211 引言在随着集成电路制造工艺的进步和处理器设计水平的不断提高,众核技术已成为当前处理器体系结构发展的必然趋势。
处理器的复杂度呈指数幅度上升,使故障的查找和修复变得越来越困难,如何对众核处理器进行有效而充分的验证,成为当今IC设计验证领域的研究热点之一,也是其能否能最终流片成功的决定性因素。
传统的功能验证方法主要采用监测并控制其地址与数据总线的方法,这对于高度集成化的众核芯片,其追踪系统总线的策略往往不能定位内部故障所在,从而不能进行下一步的分析和修改故障。
基于软件和硬件分别进行独立的仿真验证仍然是目前IC验证主要应用的功能验证方式,在此基础上,本文重点介绍了以覆盖率为功能验证导向的RISC众核处理器的验证环境的整体搭建,提出了“被动式”的测试验证思路,并采用“软硬件协同验证”的策略,最终达到了处理器运行的每条指令都对比通过的验证目标。
再辅以相应基于成熟EDA工具的功耗和时序分析验证方式,完整地提出了一套芯片验证平台搭建和验证功能实现的方法流程。
文章共分为以下几个部分:第2部分描述在“被动式验证”思想的指导下RISC众核处理器验证环境的搭建;第3部分详细描述为了达到“单条指令对比”效果的众核处理器的验证策略和具体实现;第4部分为结束语,作为本文总结。
2 众核处理器验证环境的搭建2.1 软硬件协同验证的发展现状软硬件协同验证与传统的数字系统仿真验证方法不同,它是针对软件和硬件系统模块进行的混合模拟仿真。
传统的系统验证方法通常是将软件部分和硬件部分的设计验证分开独立进行,二者在确定了设计目标之后就很少再相互考虑。
这样的设计验证方法在系统设计后期才会发现比如软硬件接口或在设计初期没有考虑到的系统功能方面的问题,导致设计资源的浪费与设计周期的延长和开发成本的不断增加。
软硬件协同验证技术的出现很好地改善了这一现状,它分为外围硬件模型验证和处理器核心验证两个部分。
软硬件协同验证通常使用硬件模拟器作为验证工具,通过执行RTL级设计描述模拟设计的物理实现,其仿真结果取决于设计描述是否正确反映了设计的物理实现,验证时需要通过测试平台产生激励和开发人员检查响应的有效性[1]。
2.2 RISC众核处理器概述本文选取一款名为“Godson-T”的RISC架构处理器芯片为研究对象和载体。
该款芯片是由中国科学院计算技术研究所系统结构国家重点实验室设计的一款片上众核处理器芯片,主要面向电信应用、服务器、金融管理、医疗和大型数据库系统等领域的高性能计算。
该款众核处理器目前已经顺利通过各项验证和测试,并成功Tape-out。
该款众核处理器的结构如图1所示,中间部分为四纵四横的十六单元阵列,每个单元由一个处理器小核和一个RT组成,两边各有两个L2--Cache,为二级数据缓存,为十六个独立小核共享。
在示意图的上方,SYNC-ma模块(同步管理器)负责同步管理各独立小核间的互联与协调[2][3]。
TAP端口负责与JTAG调试相关的接口进行通信的模块,IO模块负责向片外发送相关配置信息。
图1 Godson-T众核处理器的结构示意图2.3 验证语言System Verilog概述SystemVerilog简称为SV验证语言,是IEEE 1364 Verilog-2001标准的扩展增强,兼容Verilog HDL 2001,并已经成为硬件设计下一代验证仿真的主流编辑语言。
SV语言结合了来自Verilog HDL、C语言、面向对象设计语言的部分概念,另外包含了Assertion语言和平台语言,完美结合了验证过程中使用频繁的高层验证性语言(HVL)和开发过程中使用较多的硬件描述性语言(HDL),对于进行当今高度愈加复杂的设计验证工作无疑是提供了一种有效的解决思路。
它具有接口(interface)、断言(Assertion)、多线程(multiple threads)和函数和任务(Function and Task)等多种新的验证平台建模技术[4][5][6]。
朱博元,刘高辉,李政运,安述倩:RISC 指令集众核处理器的功能验证与实现 32.4 验证环境的整体设计Godson-T 整体验证环境设计主要由六部分组成。
包含处理器小核在内的其顶层实现模块作为待测硬件部分,参考验证模型模拟器Transformer 作为测试软件部分,这两部分具体体现软硬件协同验证的策略;内存空间Memory 由一段C 代码负责维护和执行相关操作,容量为4GB 。
输入输出接口模块(IOI )负责进行接口配置;两个同构的Memory Controller 模块(MC )分置两侧,用来针对和控制访存操作;一个存放着在验证过程中可能出现故障信息的数据库Data_base 和若干具有分选功能的选择器等共同组成验证环境中的附属模块。
其结构示意图如图2所示。
图2 Godson-T 验证环境结构示意图在Godson-T 被动式验证的指导思想下,验证环境必须做到主动去适应和满足测试小核的对每个测试程序的执行操作和处理动作,而让待测小核能够在不受平台外部条件任何干扰和容错性相关的影响下自主完成自身设计功能体现。
验证环境中由C 代码负责维护的内存空间只识别可执行文件,故在初始化时,程序列表中等待测试的程序需首先进行编译,再进行加载。
向内存中加载可执行文件是通过调用加载函数实现的,该加载函数的功能是从程序列表按照一定次序依次中读取测试程序,直到所有测试程序都加载完毕。
编号为core[0,0]作为测试程序的主核,既是需要测试的小核之一,也是测试环境中负责向其余小核客户传递消息的起点。