自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 收藏
  • 关注

原创 基于RISC-V的指令退休单元与缓存一致性总线系统研究(二)

1 RISC-V指令集及流水线实现本章从两个维度介绍RISC-V超标量处理器设计,首先是从指令集的角度研究RISC-V在高性能处理器的硬件实现上的可实施性与优势,其次从现代高性能处理器的角度,研究对RISC-V超标量处理器的流水线设计,并对应用与此的高性能处理器设计技术展开研究,包括超标量并发执行,指令分支预测,乱序执行,多核处理器等,以玄铁处理器为例,对其硬件的实现展开架构层面的探讨与研究。1.1 RISC-V指令集RISC-V指令集属于精简指令集(RISC),最早的精简指令集由Joh

2023-12-20 13:54:14 1147

原创 基于RISC-V的指令退休单元与缓存一致性总线系统研究(一)

本节将介绍几种典型的超标量处理器。x86指令集是一种CISC指令集,其单指令能够执行极为复杂的操作,一条指令即可涵盖千级bit信息,Intel作为最早研发超标量处理器的公司,伴随公司而生的x86指令集在处理器诞生以来也有着悠久但繁杂的历史,最早的x86指令是对已经具有革命意义的8位处理器Intel 8080的汇编语言进行了一次兼容的扩展,由此构建了第一个16位的处理器,而随着后续Pentium引入了超标量处理器的相关概念,AMD又对x86指令集由32位地址空间增加到64位有了现代PC端处理器的雏形。

2023-10-20 17:08:06 257

原创 ​仿真测试与原型测试(五)​

通过将生成的文件加载到系统的指令存储器中,实现了基础指令集和扩展指令集的仿真测试,对于扩展指令集,测试了SHA256指令的加速效果。此外,本章还介绍了使用FPGA进行原型验证的相关工作,通过在FPGA上运行测试用例并使用UART观察测试结果,完成了对处理器的原型验证。在编写C算法原型的时候,预留本文扩展的加解密指令的接口。测试用例使用汇编语言编写,使用本文构建的GCC工具来逐个编译上述测试用例,将生成的hex文件使用Verilog中的“$readmem”函数读入指令存储器,在测试平台运行指令测试。

2023-10-06 20:16:17 312

原创 RISC-V处理器核设计优化与扩展指令集实现(四)

由于XQ900RV为哈佛架构处理器,指令和数据分开访问,因此设置独立的指令存储和数据存储空间,每个空间大小为512KB(指令存储空间为0x00000000到0x0007ffff,数据存储空间为0x20000000到0x2007ffff),并预留一定的地址空间便于扩展。(1) 将寄存器x2设置为__kernel_stack的地址,将寄存器x3设置为__erodata的地址,将寄存器x4设置为__data_start__的地址,将寄存器x5设置为__data_end__的地址。首先是1KB DMA地址空间;

2023-09-04 16:22:04 376

原创 RISC-V处理器核设计优化与扩展指令集实现(三)

RISC-V指令集提供了在32位和64位的基础指令集“I”,任何要实现RISC-V指令集的处理器必须实现这个基本的指令集,其它的指令集都是以扩展指令集的方式实现的。从Github下载riscv-gnu-toolchain开源代码后,首先要确定指令的格式,以及指令各个字段的值,然后根据指令的这些字段确定指令的编码值和掩码值。K扩展指令是RISC-V所定义的标量密码学扩展指令,支持对常见的加解密算法,包括SHA2-256、SHA2-512、AES以及国密算法SM3和SM4的加速。op字段表示操作类型;

2023-08-29 11:01:46 685 1

原创 RISC-V处理器核设计优化与扩展指令集实现(二)

2.1 处理器微架构与流水线概述根据每周期处理的指令的数目可以把处理器分为标量处理器和超标量处理器。超标量处理器每周期可执行多条指令。根据处理器执行方式的不同,处理器微架构可分为按序执行和乱序执行两种模式。按序执行模式要求按照指令的取出顺序执行,而乱序执行模式可根据指令准备情况灵活安排执行顺序,使先准备好的指令优先执行。只有在流水线前级指令多于一条时,才有可能采用乱序执行模式。根据处理器处理指令的能力,可将处理器微架构分为单发射按序执行、多发射顺序执行和多发射乱序执行。在处理器微架构中,常见的功

2023-08-17 21:54:48 987 2

原创 RISC-V处理器核设计优化与扩展指令集实现(一)

因此,对于成熟的RISC-V处理器架构(以C910为代表)进行研究,优化处理器核设计,并研究如何在RISC-V体系下实现扩展指令集,以满足特定场景的加速需求,对于提高RISC-V处理器的通用性和灵活性、满足当今市场对处理器及系统级芯片的新要求以及实现芯片自主可控具有重要学术和实际意义。此外,RISC-V指令集的可扩展性可以灵活的适配应用场景,无论是通用处理能力还是特定领域的加速处理,都具备优异的表现,这使得基于RISC-V指令集的处理器不仅具有通用处理器的能力,还具备面向特定领域加速处理的灵活性。

2023-07-25 10:30:36 889

原创 万用表测量ZCU104开发板整板运行功耗

要得到开发板的直流功耗,就需要得到板子工作时的电压和电流。根据ZCU用户手册可以得到整板工作电压位12V,那只需要得到板子工作时的电流即可。因为ZCU104电源口(图1)没有跳线帽,我们挑选了一种6pin公转母转接线(图2),转接电源口和电源适配器接口。测量电流需要将万用表串接到电路中,于是将转接线其中的一条剪断(图3),将万用表串联接在电路中(图4)。1 连接好转接线以及万用表(如图4)图 1 ZCU104电源口。3启动烧录的Linux系统。图 2 6pin转接线。图 4 串联万用表。

2023-05-06 10:25:28 609

原创 RISC-V架构P扩展指令集的研究与实现(一)

而opcode、funct3、funct7三个操作码字段与被处理的数据无关,可以作为指令的唯一标识,并且6种指令格式的三个操作码字段(如有)均在相同的位置(opcode字段位于[6:0],funct3字段位于[14:12],funct7字段位于[31:25]),这使得CPU只需要对指令的这三个区段共17位二进制数进行识别即可,也解释了为什么在S型、SB型指令中的立即数被拆成两截,放置在两个不连续的区段,目的是为了保证三个操作码字段在指令中的位置不变,来降低译码级的复杂度。例如,上述那条加法指令可写成。

2023-04-13 15:31:57 1775 1

原创 GCC编译工具链——RISCV扩展指令集(一)

这个官方的安装就是默认newlib的,其他的linux或者embbed这里不一样的就是依赖库的问题,工具链在编译程序语言的时候会调用不同的库进行。-march=的选项有rv32i[m][a][f[d]][c], rv32g[c], rv64i[m][a][f[d]][c], rv64g[c],可以根据自己的需要选择,–mabi= 有ilp32, ilp32f, ilp32d,lp64, lp64f, lp64d,ilp32就是32位,lp64就是64位。该命令会把所有的分支拉进来,但是不会生成编译工具链。

2023-02-21 14:24:18 1293

原创 浅述C程序转换为计算机上可运行程序步骤

为了识别文件类型,UNIX遵循文件的后缀约定:C源文件命名为x.c,汇编文件命名为x.s,目标文件命名为x.o,静态链接库程序为x.a,动态链接库路径为x.so,以及默认情况下,可执行文件称为a.out。如今每个DRAM芯片的内存容量增加了数百倍,从而减少了程序员对程序带大小的关注,今天的优化编译器几乎可以像汇编语言专家那样生成汇编语言,而且对大型程序的优化效果有时比人工优化更好。由于汇编语言是高层软件的接口,因此汇编器还可以处理机器指令的常见变体,就像这些变体是他自己的指令一样。硬件不需要实现这些指令;

2023-02-08 13:37:26 270

原创 对于深度学习应用领域共同之处的一些理解

深度学习的应有都有哪些优势?因此,本文通过阅读深度学习在不同领域应用情况的相关文献,进行归纳分析,整理了关于深度学习应用优势的一些理解。[1]施俊,汪琳琳,王珊珊,陈艳霞,王乾,魏冬铭,梁淑君,彭佳林,易佳锦,刘盛锋,倪东,王明亮,张道强,沈定刚.深度学习在医学影像中的应用综述[J].中国图象图形学报,2020,25(10):1953-1981.常规的影像诊断依赖于阅片医生的水平和经验,存在着主观性强、重复性低以及定量分析不够等问题,迫切需要新的智能技术介入,帮助医生提升诊断的准确性和阅片效率。

2023-02-02 12:56:00 202

原创 BLE 简介

一共有以下七种状态:Standby State(待机)、Advertising State(广播)、Scanning State(扫描)、Initiating State (初始发起)、Connection State(连接)、Synchronization State(同步)、Isochronous Broadcasting State(等待连接)。软硬件以及软硬件交互分明的协议栈的设计,可以大大的提高设计效率,我们可以同时进行软件和硬件的设计,只要按照标准来设计,我们的设计就可以同步进行了。

2023-01-16 14:08:22 1717

原创 RISC-V 向量指令集研究(二)

模块名详情vrrm寄存器映射,分配Vis基于计分板,发射级,Vex执行阶段,包含矢量通道、环绕逻辑和连接。Vex_pipe执行通道,包括多个执行单元Vmu向量存储单元Vmu_ld_engLoadVmu_St_engStoreVmu_tp_eng数据预取2、包含的指令| vsxb | || vsxd | || vsxh | || vsxw | |其中,vtplcfg、vtpl为自定义指令。

2023-01-02 15:08:35 1224 1

原创 RISC-V 向量指令集研究 (一)

传统的通用处理器都是标量处理器,一条指令执行只得到一个数据结果。但对于图像、信号处理等应用,存在大量的数据并行性计算操作,这个时候,提高数据的并行性从而提高运算的性能就显得尤为重要。因此,SIMD技术应运而生。SIMD的英文全称是Single Instruction Multiple Data,即单指令流多数据技术,SIMD的概念是相对于SISD(Single Instruction Single Data,单指令流单数据)提出的。

2022-12-28 19:17:33 2774

原创 玄铁C910寄存器重命名

寄存器重命名技术是解决乱序处理器中产生的数据冒险的技术。在C910这样的乱序多发射处理器中,指令经过译码后进入到乱序发射阶段,如果不做处理,乱序后不同指令间对架构寄存器中数据的处理会出现冲突,因此在乱序发射前需要保证乱序发射的指令具有表明指令间先后关系的操作。玄铁C910中的寄存器重命名主要在两个单元中,分别为IDU和RTU。在IDU中,主要在ir流水级中,通过寄存器重命名表来完成重命名操作。

2022-12-21 11:32:52 492

原创 FENCE指令分析

fence_ctrl_inst0_vld、fence_ctrl_inst1vld、fence_ctrl_inst2_vld,当fence指令进入ISSUE状态时,inst0,1,2都会VLD。(inst3不会vld)也就是说,对于sfence类型的指令,会生成三条uop,uop0为LSU类型,instl1为LSU/LSUP5类型,uop3为LSU类型(相当于sync.is)3、对于sync类型的指令,fence_inst0和fence_inst2为LSU类型,Inst2是sync.is指令。

2022-12-13 10:45:28 1259 1

原创 IDU-指令译码单元

IDU是玄铁C910中负责指令译码、寄存器重命名、派遣和发射逻辑的单元,主要划分为四级流水级,分别为ID、IR、IS、RF,玄铁C910中流水线分为控制通路和数据通路。本文将从流水级从前到后的顺序,介绍玄铁C910译码单元逻辑设计,以及在玄铁C910基础上进行扩展四发射所涉及逻辑。

2022-12-13 10:38:45 809

原创 ASIC-FPGA敏捷开发

Spinal HDL也是基于Scala的,更具体的说是一个基于Scala的库,相较于Chisel,一个显著的优点是生成代码的可读性比较高。HLS是Xilinx的一款高层次综合工具,与HDL Coder相同的是,对于复杂设计尤其是算法设计,都提供了一种简单快速的方式,不同的是,HLS使用的是C/C++的模型进行描述,描述语法尤其相关规定,使用者可以使用高级C/C++描述自己的算法模型,然后快捷的使用HLS工具将这种更高层次语言描述的模型转换成硬件语言描述的模型。工欲善其事,必先利其器。

2022-12-13 10:36:53 392

原创 Vitis-AI 量化编译Yolov5并部署至ZCU104(Pytorch框架)

知道问题后,接下来就是寻找2.5.0版本的下载包地址。1、我们使用的是pytorch框架的yolo模型,在使用vitis-ai量化前根据指导手册,要安装vai_q_pytorch,但是需要注意,我们在安装过程中一直在报错,如下图。那么问题只能是模型中存在了DPU不能够识别的算子,才会导致生成多个子图,我们打开DPUCZDX8G产品指南,可以清楚看到该型号下DPU所支持的算子,如下图。这一步才是最容易踩坑的地方!

2022-12-13 10:33:41 785 2

原创 现代处理器的设计思想

而动态分支预测,主要依赖于CPU的特殊结构,也就是上述所说的分支预测器,常见的动态分支预测如BTB(branch target buffer),就是一个类似于cache结构的buffer,每一条entry储存对应分支的跳转目标地址,tag为对应分支的PC。由于risc-v中有单独的访存指令,在一般risc-v的处理器中,将访存操作(也就是上述所说的load、store指令)放到执行级里,所以一般的risc-v处理器架构可以简单理解为四部分,取指,译码,执行,写回;首先任何处理器,处理信息的最小单位都是。

2022-12-13 10:30:21 326

原创 SOC系统简介

如果我们把核心理解为大脑,那么总线可以理解为神经纤维,那么除核心与总线外的其他模块组成手臂,腿,以及五官等,大脑(core)发送命令,通过神经纤维传达命令给我们的肢体,肢体收到指示去做相应的工作。上文提及到的总线可以理解为核心与其他模块的桥梁,核心发出指令,指令和数据可以通过总线到达目标模块,经常使用的总线包括AXI、AHB、APB等,其中AXI与AHB属于高速总线主要负责挂一些高速外设,比如DDR控制器与FLASH控制器等,而APB为低速总线主要用来挂一些低速外设,比如UART、SPI等。

2022-12-13 10:28:20 1133

原创 玄铁C910总览

玄铁C910是由平头哥设计并开源的高性能CPU,基于开源的RISC-V指令集,主要面向对性能要求严格的边缘计算领域,如边缘服务器、边缘计算卡、高端机器视觉、高端视频监控、自动驾驶、移动智能终端、5G 基站等。玄铁C910主要特点如下:同构多核架构,支持双核;(开源版本为双核,预留四核接口)• 支持各个核心独立下电以及cluster 下电;• 支持1 个AXI4.0 Master 接口,128 比特的总线宽度;

2022-12-13 10:24:03 3535

原创 e203学习笔记(一)对于M指令集中back2back情况的简单介绍

如果希望得到两个32位整数相乘的完整64位结果,RISC-V架构推荐使用两条连续的乘法指令“MULH[[S]U] rdh, rsl, rs2;MUL rdl, rsl,rs2”, 而对于除法如果希望同时得到两个32位整数相除的商和余数,RISC-V架构推荐使用两条连续的除法和取余指令“DIV[U] rdq, rsl, rs2;但是对于RISC-V架构的CPU来说,它所有的通用寄存器都是32位的,如果我们要进行两个32位操作数的乘法操作,那该如何保存这个操作的结果呢?

2022-12-13 10:21:32 535

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除