当前位置: 首页 > news >正文

ESL设计概述

‍‍

‍‍前言

  随着芯片面临着应用场景丰富多变、集成功能模块越来越多、片内通信及模块间接口越来越复杂、设计规模越来越大以及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.


‍‍

‍‍

相关文章:

ESL设计概述

‍‍ ‍‍前言 随着芯片面临着应用场景丰富多变、集成功能模块越来越多、片内通信及模块间接口越来越复杂、设计规模越来越大以及PPA要求越来越高的需求,芯片设计方法面临越来越大的挑战。架构的合理性、完备性和一致性很大程度上决定了芯片设计的成败。基于同样的I…...

探究C语言数组的奥秘:大小可省略的定义、内存存储、数组名、传参、指针遍历、数组指针和指针数组、柔性数组等

也许你认为,C语言中的数组非常好理解,就是把一组相同类型的元素存储在同一块空间里。但是你可能并没有真正理解数组的本质,不信的话请回答一下下面的几个小问题,如果你能非常清晰的回答这些问题,那么你对C语言中的数组…...

python3 强制使用任意父级相对导入,越过python相对导入限制,拒绝 ImportError

前言 单纯不喜欢 python 对 点开头的包的限制,好麻烦,遂写了本包,来解决这个问题启用本模块后,你可以随时使用 单个点来导入当前目录的模块,也可以使用多个 点导入多级父目录内的模块,而不会报错烦人的模块…...

面了一个4年经验的测试工程师,自动化都不会也要15k,我也是醉了····

在深圳这家金融公司也待了几年,被别人面试过也面试过别人,大大小小的事情也见识不少,今天又是团面的一天, 一百多个人都聚集在一起,因为公司最近在谈项目出来面试就2个人,无奈又被叫到面试房间。 整个过程…...

Java 实现 YoloV7 人体姿态识别

1 OpenCV 环境的准备 这个项目中需要用到 opencv 进行图片的读取与处理操作,因此我们需要先配置一下 opencv 在 java 中运行的配置。 首先前往 opencv 官网下载 opencv-4.6 :点此下载;下载好后仅选择路径后即可完成安装。 此时将 opencv\b…...

跨越屏幕:桌面PC端的多端开发框架介绍

目前,随着互联网和移动互联网的发展,多端开发框架已经成为越来越多开发者更好的选择。主要有以下几个方面的前景: 跨平台开发需求不断增加:由于不同平台和设备的差异性,开发人员需要使用不同的编程语言和开发工具来为各…...

高效学习方法和工具推荐,让你事半功倍!

本文介绍了五种高效学习方法,包括制定详细的学习计划、集中注意力、不断复习、采用多种学习方式和利用小休息。同时,还推荐了五个高效学习工具和平台,包括Coursera、Duolingo、Quizlet、Khan Academy和Anki,让你在学习中事半功倍&…...

查看Docker容器中RabbitMQ的密码

要查看Docker容器中RabbitMQ的密码,可以尝试以下几个步骤: 1. 查看容器运行时的环境变量 在Docker容器中,可以通过环境变量来设置RabbitMQ的用户名和密码。因此,可以使用以下命令查看容器的环境变量: docker inspect…...

探索Qt线程编程的奥秘:多角度深入剖析

探索Qt线程编程的奥秘:多角度深入剖析 一、Qt线程编程基础(Qt Threading Basics)1.1 线程概念与基本概念(Thread Concepts and Fundamentals)1.2 Qt线程类简介:QThread(Introduction to Qt Thre…...

【R语言】鉴于计算10亿以内训练模型记录for循环的加速

文章目录 1 前言2 几个循环2.1 100以内的和2.2 100以内奇数和/偶数和 3 多重循环3.1 向量化3.2 合并循环3.3 apply函数3.4 矩阵运算3.5 foreach分解任务 4 讨论 1 前言 笔者主力机是MBAM1芯片(8256),某个下午巩固循环突然思考到个问题&#…...

C++类和对象 ——构造函数

C拷贝构造函数详解 什么是拷贝构造函数?拷贝构造函数的特征默认拷贝构造函数为什么需要显示定义构造函数?拷贝构造函数的调用场景什么时候不需要自己定义拷贝构造函数 什么是拷贝构造函数? 在现实生活中,拷贝构造函数就好像我们上…...

第2章-分治法

第2章-分治法 总分:100分 得分:20.0分 1 . 多选题 中等 10分 有关以下代码,说法正确的是( ABCE) def BinarySearch(s, x, low, high):if (low > high):return -1middle (low high) / 2if (x s[mid…...

20天能拿下PMP吗?

新版大纲,专注于人员、过程、业务环境三个领域,内容贯穿价值交付范围(包括预测、敏捷和混合的方法)。除了考试时间由240分钟变更为230分钟、200道单选题变为180道(包含单选和多选)之外,新考纲还…...

Word处理控件Aspose.Words功能演示:在 Java 中将 Word DOC/DOCX 转换为 PDF

Aspose.Words是一种高级Word文档处理API,用于执行各种文档管理和操作任务。API支持生成,修改,转换,呈现和打印文档,而无需在跨平台应用程序中直接使用Microsoft Word。 Aspose API支持流行文件格式处理,并…...

数据安全的重要性

数据安全非常重要,因为我们生活在数字化时代,许多信息和数据都以数字形式存储和传输。如果这些数据受到未经授权的访问、篡改、泄露或破坏,会对个人、组织和国家造成严重的损失。 以下是数据安全的重要性: 1. 保护各类隐私&#x…...

要创建富文本内容?Kendo UI Angular组件有专门的编辑器应对!

您的Angular应用程序可能需要允许用户添加带有格式化选项的文本、图像、表格、外观样式和/或链接,使用Kendo UI for Angular的编辑器,可以轻松搞定这些! Kendo UI for Angular是专业级的Angular UI组件库,不仅是将其他供应商提供…...

工赋开发者社区 | 装备制造企业数字化转型总体框架

导读 当前,面对技术、市场以及供应链等多重挑战,在软件定义、数据驱动、数字孪生、大数据、人工智能及元宇宙等技术加持下,装备制造企业不断采用新工艺、新材料,以新模式推动产品快速创新。企业积极关注并探索数字化转型路径&…...

Python趋势外推预测模型实验完整版

趋势外推预测模型实验完整版 实验目的 通过趋势外推预测模型(佩尔预测模型),掌握预测模型的建立和应用方法,了解趋势外推预测模型(佩尔预测模型)的基本原理 实验内容 趋势外推预测模型 实验步骤和过程…...

KALI入门到高级【第三章】

预计更新第一章 入门 1.1 什么是Kali Linux? 1.2 安装Kali Linux 1.3 Kali Linux桌面环境介绍 1.4 基本命令和工具 第二章 信息收集 1.1 网络扫描 1.2 端口扫描 1.3 漏洞扫描 1.4 社交工程学 第三章 攻击和渗透测试 1.1 密码破解 1.2 暴力破解 1.3 漏洞利用 1.4 特…...

React Native中防止滑动过程中误触

React Native中防止滑动过程中误触 在使用React Native开发的时,当我们快速滑动应用的时候,可能会出现误触,导致我们会点击到页面中的某一些点击事件,误触导致页面元素响应从而进行其他操作,表现出非常不好的用户体验。 一、问题…...

Java 语言特性(面试系列2)

一、SQL 基础 1. 复杂查询 (1)连接查询(JOIN) 内连接(INNER JOIN):返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...

树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法

树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作,无需更改相机配置。但是,一…...

基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销,平衡网络负载,延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...

学校招生小程序源码介绍

基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码,专为学校招生场景量身打造,功能实用且操作便捷。 从技术架构来看,ThinkPHP提供稳定可靠的后台服务,FastAdmin加速开发流程,UniApp则保障小程序在多端有良好的兼…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)

文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...

Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)

Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习) 一、Aspose.PDF 简介二、说明(⚠️仅供学习与研究使用)三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...

OD 算法题 B卷【正整数到Excel编号之间的转换】

文章目录 正整数到Excel编号之间的转换 正整数到Excel编号之间的转换 excel的列编号是这样的:a b c … z aa ab ac… az ba bb bc…yz za zb zc …zz aaa aab aac…; 分别代表以下的编号1 2 3 … 26 27 28 29… 52 53 54 55… 676 677 678 679 … 702 703 704 705;…...

数学建模-滑翔伞伞翼面积的设计,运动状态计算和优化 !

我们考虑滑翔伞的伞翼面积设计问题以及运动状态描述。滑翔伞的性能主要取决于伞翼面积、气动特性以及飞行员的重量。我们的目标是建立数学模型来描述滑翔伞的运动状态,并优化伞翼面积的设计。 一、问题分析 滑翔伞在飞行过程中受到重力、升力和阻力的作用。升力和阻力与伞翼面…...

vue3 daterange正则踩坑

<el-form-item label"空置时间" prop"vacantTime"> <el-date-picker v-model"form.vacantTime" type"daterange" start-placeholder"开始日期" end-placeholder"结束日期" clearable :editable"fal…...

人工智能 - 在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型

在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型。这些平台各有侧重&#xff0c;适用场景差异显著。下面我将从核心功能定位、典型应用场景、真实体验痛点、选型决策关键点进行拆解&#xff0c;并提供具体场景下的推荐方案。 一、核心功能定位速览 平台核心定位技术栈亮…...