ESL设计概述

news2025/1/16 5:53:17

‍‍

‍‍前言

  随着芯片面临着应用场景丰富多变、集成功能模块越来越多、片内通信及模块间接口越来越复杂、设计规模越来越大以及PPA要求越来越高的需求,芯片设计方法面临越来越大的挑战。架构的合理性、完备性和一致性很大程度上决定了芯片设计的成败。基于同样的IP及工艺制程,不同架构实现相同功能所需的资源开销及性能差距很大。因此,芯片设计的第一环节——系统架构设计及其仿真优化,变得越来越重要,是后续一切硬件、软件开发的基础。 

    由于传统方法逐渐无法处理迅速发展的集成了大量功能的系统算法内容,ESL设计在近几年快速普及。ESL设计,即电子系统级(Electronic System Level)设计方法学,是一种抽象程度高于RTL(Register Transfer Level,寄存器传输级)设计的芯片设计与验证方法。在芯片设计过程中,工程师需要设计的内容通常包括芯片性能模型、芯片功耗模型、芯片功能模型,在此过程中以及芯片验证过程中,均可以利用ESL设计来实现。ESL设计可以为芯片设计工程师提供开发、优化、验证芯片架构与嵌入软件的方法,以及提供验证服务。

ESL设计的作用

  从仿真目的来说,ESL设计可以分为芯片架构仿真,芯片co-sim验证,芯片软硬件联调:芯片架构仿真包括芯片的性能仿真与功耗仿真;芯片co-sim验证包括子系统级联合仿真验证与模块级联合仿真验证;芯片软硬件联调目的是与RTL开发解耦,快速完成软硬件联合调试。  例如在架构性能仿真场景下,需要根据架构设计需求,在给定应用场景或benchmark情况下,将对性能有影响的组件构建在一起模拟实际运行场景,以动态运行的方式获取感兴趣的性能数据,以完成架构设计的寻优、调优或确认。  下图展示了仿真器在CPU开发过程中的作用[1]

308780d869793e84d90a35063d10da32.png

仿真器在芯片设计中的作用

  由图可知:

  1. 在芯片开发早期,基于仿真器可以进行微结构探索和粗粒度微结构定义,此时仿真器的开发抽象层次较高;

  2. 随着处理器设计的不断推进和仿真器的不断完善,基于仿真器可以持续对芯片为芯片微结构进行评估、修改和取舍;

  3. 当仿真器趋于成熟,可以对微结构、多核互联系统、一致性协议等进行详细性能分析,基于分析结果对微结构进行微调;

  4. 在对处理器逻辑设计进行验证的阶段,仿真器可以作为参考模型辅助进行验证,可以快速定位逻辑设计错误;

  5. 在未流片之前基于仿真器就可以开展系统软件开发和适配工作,这样可以在芯片流片结束后以最快速度启动系统软件。

ESL仿真器的基本组成

  完整的ESL仿真器由4个层次构成:应用层、组件层、内核层和主机层。其中组件层和内核层构成仿真器的主体,应用层为仿真器提供输入,而主机层承载了仿真器的运行,如图所示:

b8a28b056c08f78e4f199458cd576ee9.png

ESL模拟器基本组成

  1. 应用层:负责芯片工作时的场景构建,用来产生仿真器的输入或仿真激励,包含三种应用模式:

    1. 执行驱动:运行业务软件,生成流量驱动。与目标系统程序的运行方式类似,都是执行编译好的可执行二进制代码;

    2. Trace驱动:解析其他平台生成的处理器核Trace轨迹,生成流量驱动。用trace代替实际CPU模型,将每条指令顺序执行所产生的所有信息作为仿真器的输入;

    3. Traffic驱动:根据分解的业务动作配置表及驱动关系,生成流量驱动。给目标架构注入流量,实施载体为Traffic Generator(TG)。

  2. 组件层:基于开源软件或工具生成的第三方IP或厂商提供的多精度模型搭建生成的待测芯片架构,使用TLM接口通信。组件层一般包括处理器组件、TG组件、接口转换组件、互联组件、DDR组件和Cache组件等。

  3. 内核层:以事件队列为核心,控制仿真事件的正确调度、仿真时间的正确推进,控制整体仿真进程,支持组合目标硬件系统,支持串行、并行仿真和仿真加速手段。

  4. 主机层:Linux多核工作站,承载架构仿真任务。

ESL设计与实现

  系统级设计中,首先要解决的问题是如何描述系统也就是所谓的系统建模。系统建模的抽象层次可以分为三类:

  1. 算法级建模(ALF,Algorithm Function):功能模型,没有时序概念,与体系架构及具体实现关系不大,没有办法进行进一步的性能分析。

  2. 寄存器传输级建模(RTL,Register Transfer Level):关注电路在寄存器、连线层次上的细节,模型建立和仿真都需要很长时间。

  3. 事务级建模(TLM,Transaction Level Modeling):介于ALF和RTL之间,可以为算法选择、软硬件划分、协同仿真的接口建模提供折中的评价方法。

  三者的关系如图所示:

586c8bc7d0e9c8b439568acfb59d83a9.pngESL建模抽象层次对比

  ESL设计的核心是事务级建模,这里的事务是指模块之间的数据和事件的交互。事务级建模的核心概念是在一个系统建模的过程中将运算功能和通信功能分开,模块之间的通信通过函数调用来实现。与RTL级模型相比较,TLM可以减少事件和信息的处理,而且事务级模型所需的程序代码更少,执行速度更快。  根据系统描述精度的不同,OSCI(The Open SystemC Initiative)提出的TLM1.0和TLM2.0标准对事务级建模进行进一步细分,如图所示:

10a2b1ac7a53975088c10d788804e05d.png

ESL建模精度对比

  可以看出,没有时序信息的事务级模型的建模和仿真速度最快,精确到周期的事务级相对较慢,但如需进行硬件体系架构分析或硬件性能分析往往需要近似时序或周期精确的建模精度。

  在ESL实现上,为了达到最优的性能,开发者需要利用硬件亲和的编程语言如:SystemC和C++来进行开发。这是因为:SystemC和C++的使用使得ESL框架可以高效调用硬件的底层API,从而最大限度发挥硬件性能。同时,现代操作系统(如Linux和Windows)提供丰富的基于SystemC和C++的编程接口(如文件系统,网络编程,多线程管理等),通过直接调用操作系统API,可以降低框架运行的开销。

  从精度的角度分析,10~20%的精度损失换来的仿真速度的1000倍提升以及架构迭代速度的10倍提升,被认为是可以承担的代价。同时从易用性角度分析,Python等高级语言具备以C和C++为核心的低层次编程接口,通过Python丰富的库函数,可以快速搭建系统架构与性能分析(Profiling)平台。为了实现处理器的敏捷开发,UC Berkeley还开发了高度参数化的硬件构建语言Chisel,可以直接使用面向对象的设计方法学描述处理器功能,通过编写一次硬件代码可以生成包含C++周期精确仿真器、FPGA Verilog和ASIC Verilog这三个目标,使得处理器设计效率提升一个数量级。

开源ESL仿真器

  目前开源的ESL仿真器种类较多,不同的开源仿真器具有不同特点,因此开发人员可以根据所研究的内容选择合适的开源仿真器平台进行实验,为系统架构研究提供了很高的灵活性,有助于快速实现原型系统。同时,开源仿真器的社区一般比较活跃,生态环境好,在原型系统实现过程中,遇到问题可以很快找到解决方案,从而快速构建实验用的原型系统。

  但使用开源模拟器也存在一定的局限性,各厂商的微架构一般与开源模拟器的微架构差别较大,因此修改模拟器的代价较大。例如GEM5模拟器中乱序执行流水线的设计主要参考的是Alpha21264处理器,基于此进行微架构修改的工程量较大,实现架构搭建及性能分析所需的人力及时间要高于商用工具。此外,由于模拟器开发是一项较大的软件工程,而软件工程的框架一旦确定,修改起来也会比较棘手。

  下表整理了常见的开源计算机架构/微架构仿真器[2]

bcf539e2eddc76cb3ad742fbd43443de.png

8cee7adb363a5f031aebe5dacdda0f4d.png

b14e74da54919c34350d9e49a23b44d3.png

总结

  ESL设计对于简化芯片设计流程,提高芯片设计效率起到了重要作用。本文从芯片设计实例出发,简要介绍了ESL设计的定位与实现方式,总结了开源ESL仿真器供读者参考。

    最后,欢迎大家关注我们团队的Adlik深度学习推理工具链开源项目,Adlik社区期待你的加入。

5c169c9d280548b7d133569b79617502.png

参考文献

[1] 张乾龙, 侯锐, 杨思博, 赵博彦, 张立新. 体系结构模拟器在处理器设计过程中的作用[J]. 计算机研究与发展, 2019, 56(12): 2702-2719.

[2] Akram A, Sawalha L. A survey of computer architecture simulation techniques and tools[J]. Ieee Access, 2019, 7: 78120-78145.


‍‍

‍‍

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/491391.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《基于光电容积图法的两种可穿戴设备在不同身体活动情况下监测心率的一致性:一种新的分析方法》阅读笔记

目录 一、论文摘要 二、论文十问 Q1:论文试图解决什么问题? Q2:这是否是一个新的问题? Q3:这篇文章要验证一个什么科学假设? Q4:有哪些相关研究?如何归类?谁是这一课…

电容笔有必要买最好的吗?推荐的ipad手写笔

随着科技的进步,各种类型的电容笔的生产厂家越来越多。一支好的电容笔,不仅能大大提高我们的工作效率,而且能大大提高我们的学习效果。平替电容笔无论从技术水平,还是从产品品质来看,都具有十分广阔的市场前景。以下是…

redis基本数据类型及常见命令

数据库操作 select <库号>: 切换库 默认共有15个 dbsize: 查看当前库的key数量 flushdb: 清空当前库 flushall: 清空所有库 Key的操作 keys *&#xff1a; 查看当前库的所有key exists <key>: 判断该key是否存在 type <key>: 查看该key的类型 de <…

【原创】使用PowerShell配置新安装的ESXI主机

安装PowerCLI 模块 在线安装 优点&#xff1a;简单 缺点&#xff1a;太慢 启动PowerShell命令行&#xff0c;执行行如下命令 Install-Module -Name VMware.PowerCLI离线安装 先到VMware官网下载离线包&#xff0c;然后分几个步骤安装 https://developer.vmware.com/powercl…

redis5新增数据类型

Bitmaps 概念 &#xff08;1&#xff09; Bitmaps本身不是一种数据类型&#xff0c; 实际上它就是字符串&#xff08;key-value&#xff09; &#xff0c; 但是它可以对字符串的位进行操作。 &#xff08;2&#xff09; 可以把Bitmaps想象成一个以位为单位的数组&#xff0c; 数…

HIEE300024R4 UAA326A04什么是反馈和前馈控制系统?

​ HIEE300024R4 UAA326A04什么是反馈和前馈控制系统&#xff1f; 反馈控制系统&#xff1a; 反馈系统测量过程中的值并对测量值的变化做出反应。 在传感器的帮助下测量过程的输出&#xff0c;并将传感器值提供给控制器以采取适当的控制措施。控制器将此传感器信号与设定点进行…

人物专辑丨技术服务展计讯风采,助力客户显计讯担当

正所谓&#xff1a;平凡铸就伟大。一切令人赞叹的不凡&#xff0c;都来自于平凡点滴的坚守&#xff1b;一切砥砺前行的坚持&#xff0c;都来自于责任的担当。 在计讯物联高质量发展的进程中&#xff0c;不乏敢于担当、踏实勤恳、爱岗敬业的计讯人。他们扎根岗位&#xff0c;坚…

grafana-report在grafana7中遇到的问题

一、点击之后报错pdf报错&#xff1a;NO image renderer available/installed 查看grafana日志后&#xff0c;有以下报错&#xff1a; Could not render image, no image renderer found/installed. For image rendering support please install the grafana-image-renderer …

ThingsBoard使用jar包单机部署

1、概述 前面一节我讲了如何初始化数据库表结构以及默认的数据。这一节我将讲解如何使用jar包部署。 2、部署 2.1、修改thingsboard.yml配置 上一节我已经讲解了thingsboard.yml中的基础配置,基础的组件配置如何redis、kafka、Cassandra、pg等大家都知道,关键的地方是在于…

Neo4j图数据库的介绍_图数据库结构_节点_关系_属性_数据---Neo4j图数据库工作笔记0001

以前就知道这个了,也见别人用过,在大数据领域有可能会用到所以就看了一下. 其实就是用来,指定数据之间的关系,但是他这个更适合处理,数据之间的大规模的关系 可以看到图数据可以用到上面的这些领域 因为图数据库,更适合处理关系,基于数学中的图论 可以看到,因为如果关系太庞大…

pandas使用教程:pandas resample函数处理时间序列数据

文章目录 时间序列(TimeSeries)执行多个聚合 上采样和填充值通过apply传递自定义功能 DataFrame对象 时间序列(TimeSeries) #创建时间序列数据 rng pd.date_range(1/1/2012, periods300, freqS)ts pd.Series(np.random.randint(0, 500, len(rng)), indexrng) ts2012-01-01 0…

十二、MyBatis分页插件

文章目录 十二、分页插件12.1 分页插件使用步骤12.2 分页插件的使用12.3 测试案例 本人其他相关文章链接 十二、分页插件 12.1 分页插件使用步骤 1. 添加依赖 <dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</art…

Java基本数据类型以及包装类型的常量池技术

Java 中的基本数据类型 Java 中有 8 种基本数据类型&#xff0c;分别为&#xff1a; 6 种数字类型&#xff1a; 4 种整数型&#xff1a;byte、short、int、long2 种浮点型&#xff1a;float、double 1 种字符类型&#xff1a;char1 种布尔型&#xff1a;boolean。 这 8 种基本…

Socks5 代理协议:网络安全中的利器

随着网络的普及&#xff0c;网络安全问题已成为各行各业所面临的共同难题。为了保护自己的网络安全&#xff0c;不少人选择使用代理IP&#xff0c;其中 Socks5 代理协议因其安全性、灵活性等优势备受青睐。本文将介绍 Socks5 代理协议及其在网络安全中的作用。 一、什么是 Soc…

安卓手机搭建智能语音客服/通话播音/聊天播音乐技术实现

声明&#xff0c;此项技术需要root支持&#xff0c;如果因为刷机导致手机变砖或其他不可预料的后果请自行解决。 场景 我有一个朋友他是做业务的&#xff0c;主要还是做电销&#xff0c;其实电销相对于以前纪念没那么好做了&#xff08;我自己觉得主要是互联网冲击&#xff0c…

[EIS 2019]EzPOP

[EIS 2019]EzPOP 考点&#xff1a; base64加密&#xff0c;解密的时候按4个的倍数 然后数组里面含有 php代码也可以执行 然后学到了解题思路&#xff0c;逆推然后找各个变量的初始值 <?php error_reporting(0);class A {protected $store;protected $key;protected $expire…

JAVA原生语言开发多学校Saas模式校园管理系统

开发语言&#xff1a;JAVA数据库&#xff1a;MySQL后端框架&#xff1a;Spring boot前端框架&#xff1a;VUE2电子班牌&#xff1a; Android 7.1小程序&#xff1a;原生开发多学校Saas 模式 详细技术栈 前后端分离 1、使用springboot框架Javavue2 2、数据库MySQL5.7 3、移动端…

1.数据库的管理(实验报告)

目录 一﹑实验目的 二﹑实验平台 三﹑实验内容和步骤 四﹑命令(代码)清单 五﹑命令(代码)运行结果 一﹑实验目的 了解SQL Server数据库的逻辑结构和物理结构的特点&#xff1b;掌握使用SQL Server管理平台对数据库进行管理的方法&#xff1b;掌握使用Transact-SQL语句对数…

云原生时代崛起的编程语言Go并发编程实战

文章目录 概述基础理论并发原语协程-Goroutine通道-Channel多路复用-Select通道使用超时-Timeout非阻塞通道操作关闭通道通道迭代 定时器-TimerAndTicker工作池-Worker Pools等待组-WaitGroup原子操作-Atomic互斥锁-Mutex读写互斥锁-RWMutex有状态协程单执行-Once条件-Cond上下…

交通拥堵、安全隐患、能源浪费…数字孪生技术助力城市管理现代化

随着智能城市的不断发展&#xff0c;数字孪生技术也开始在智慧城市的建设中得到了广泛应用。数字孪生作为一种数字化的复制技术&#xff0c;它可以模拟真实世界中的实体和过程。 在城市规划方面&#xff0c;数字孪生可以帮助城市规划师更加直观地了解城市的整体规划和发展趋势&…