玄铁C910总览

2023-11-17

一、 开源玄铁C910简介

玄铁C910是由平头哥设计并开源的高性能CPU,基于开源的RISC-V指令集,主要面向对性能要求严格的边缘计算领域,如边缘服务器、边缘计算卡、高端机器视觉、高端视频监控、自动驾驶、移动智能终端、5G 基站等。

玄铁C910主要特点如下:

同构多核架构,支持双核;(开源版本为双核,预留四核接口)

• 支持各个核心独立下电以及cluster 下电;

• 支持1 个AXI4.0 Master 接口,128 比特的总线宽度;

• 两级cache结构,哈佛结构L1cache(Icache、Dcache)和共享的L2cache;

• L1cache支持MESI 的一致性协议,L2cache支持MOESI 的一致性协议;

• 支持RISC-V私有中断控制器CLINT 和平台级中断控制器PLIC;

• 支持自定义且接口兼容RISC-V 的多核调试框架;

图1:SOC架构图

二、 模块简介

1、 IFU

• IFU为玄铁C910中的取指模块,包括三级流水线IF、IP、IB。IFU中主要完成指令从icache中取指、分支预测、预译码以及发送给IDU的功能。包括L0BTB, BTB(Branch Target Buffer, 分支目标缓冲器)、BHT(Branch History Table, 分支历史表)、Lbuf(Loop Buffer,短循环加速器)、IndBTB(Indirect BTB, 间接跳转目标缓冲器)、 RAS(Return Address Stack, 返回地址堆栈)等功能部件。

2、IDU

• IDU为玄铁C910中的译码模块,包括四级流水线ID、IR、IS、RF。IDU主要完成指令的译码、预派遣、寄存器重命名、指令派遣等功能。在IDU中RISC-V指令会被译码成微操作,在完成寄存器重命名后,派遣到七条发射管道中。

3、IU

• IU为玄铁C910中的执行模块,主要分为ALU、BJU、MUL、DIV四个部分,分别处理算数运算、跳转运算、乘法运算、除法运算等。各执行模块流水级长度不同,ALU为单周期,其他单元为多周期。IU负责将IDU的RF级发射的指令执行完毕,并完成指令的complete判断。

4、LSU

• LSU为玄铁C910中load/store单元,主要负责数据存储/加载。Load/store分别有一条流水线,支持load、store 指令双发射、全乱序执行。访存流水线分为AG(Address generation)、DC(Data cache)、DA(Data align)、WB(Write back)四个流水级,LSU中主要包括数据预取单元,从dcache中存取数据以及维护多核数据状态等。

5、RTU

• RTU是玄铁C910中负责指令退休单元,主要为ROB和指令retire的逻辑以及物理寄存器堆、异常寄存器堆等。玄铁C910支持指令快速退休机制,将指令的退休划分为complete、retire两个过程。

6、MMU

• MMU是玄铁C910中负责内存管理的单元,主要完成内存地址的虚实转换,RISC-V SV39标准。MMU中包括两级TLB(Translation Look-aside Buffer),用于缓存最近使用过的页表。

7、BIU

• BIU是玄铁C910的核内总线,支持AMBA4.0 AXI协议,有8个通道。不同单元通过各种事务类型访问总线。对于多核数据一致性,玄铁C910通过 snoop方式维护。

8、CIU

• CIU是玄铁C910核外负责处理多核数据一致性的单元,负责处理器核心和L2cache之间数据存取。L2cache大小可配置,大小128KB/256KB/512KB/1MB,为16路组相连结构,cacheline大小为64Byte。内存与Cache的组之间采用直接映射,而组内采用全相联映射。L2cache data 每一路4个bank,每行的64byte=512位,index为13位,每个bank1个index,索引具体在哪一行里,每128位为一个bank,通过gwen写使能。

三、 主要研究方向

基于玄铁C910的三译码八执行的微架构,对内部微架构进行修改,主要涉及内容如下:

1. 玄铁C910取值模块从ICACHE中取指为128的取指宽度,最多支持每周期取出4条RISC-V(32bit)指令

当流水线中出现4条指令全部有效的情况时,指令会暂存到指令buffer中,再从buffer中pop出三条指令,优化后可以减少buffer表项数,提高IFU-IDU的效率。

2.三组译码器设计,每周期最多可以译码出4条uop

对于split_long类型的指令,只有原子指令集一种,而原子指令集每条指令可以分解出1~5条微操作,扩展成5uop可以在单周期内处理完原子指令。扩展成四译码5uop的设计可以扩充数据流宽度。

3.现有架构为八路执行,七个发射队列,每个指令发射队列有8/12个表项,表项利用率偏低

每个队列为两写入一写出端口,单周期写入更多指令可以提高表项利用率。 增加指令发射的数量可以提高执行级的利用效率,提高CPU的IPC,达到性能提升的效果。

4. 玄铁C910为4uop重命名的结构,有64个ROB表项,表项利用率低

ROB表项的利用率一定程度上体现了CPU的乱序能力。

根据测试结果,玄铁C910中ROB表项占用率在高负载测试环境下也最多占用20~30个表项。例如INTEL的12代CORE I7 ,包括500多个ROB表项,而玄铁C910中含有64个ROB表项,原有设计中64个表项利用率偏低。ROB的表项的读写占用面积和时序都很大,因此提高ROB表项的利用率可以更好的发挥CPU性能。提高指令重命名数量后,指令的乱序发射能力会提高,更多的指令会进入执行级中。加入指令快速退休机制后,可以更快的完成指令的complete和retire。对增加的一条uop扩展指令fold机制,可以占用更少的ROB表项。

四、 专栏后期规划

本专栏主要记录山东大学周莉教授课题组对开源玄铁C910的代码理解和架构分析,以及架构修改等内容。后续文章将介绍我们对流水线各模块具体介绍及分析,以及修改架构内容等。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

玄铁C910总览 的相关文章

  • Chisel Tutorial(五)——Bundles与Vecs

    以下内容依据2015 7 10版的Chisel 2 2 Tutorial整理 此处的Bundles Vecs就不翻译了 免得因为翻译不准引起一些误解 童鞋们有没有好的建议 lt
  • RISC-V IDE MRS使用笔记(三):提升浮点计算效率

    RISC V IDE MRS使用笔记 三 提升浮点计算效率 MRS内置CH32V30X系列芯片 此系列芯片支持FPU 浮点计算单元 想要打开时需要开启相应的扩展 如下图所示 此时如果编译单精度类型的浮点变量 就会启用FPU进行浮点计算 提高
  • RISC-V新进展!deepin 成功适配VisionFive 2

    RISC V指令集是基于精简指令集计算 RISC 原理建立的开放指令集架构 ISA RISC V则是在指令集不断发展和成熟的基础上建立的全新指令 RISC V指令集完全开源 设计简单 拥有模块化的设计 完整的工具链 易于移植Unix系统 以
  • 统信桌面操作系统产线总经理王耀华:深度开源社区的十五年运营路

    深度 deepin 社区是以桌面操作系统为主的开源社区 已经持续运营15年 有接近13万的注册用户 全球下载超过8000万 海外超过300万 并基于deepin衍生出ubuntuDDE manjaro deepin等多个发行版本 2022
  • RISC-V --rocket-chip generator介绍及其仿真使用

    最近工作使用 rocket chip generator 仿真非极大值抑制算法 C语言编写 分析其时序模型和riscv汇编指令 这里将rocket chip generator的使用方法总结一下 说明 使用的rocket chip gene
  • 使用 Ccrypt 在 Linux 中加密/解密文件

    Ccrypt 是一个用于数据加密和解密的命令行工具 Ccrypt 基于 Rijndael 密码 与 AES 标准中使用的密码相同 另一方面 在 AES 标准中 使用 128 位块大小 而 ccrypt 使用 256 位块大小 Ccrypt
  • Chisel教程——04.Chisel中的控制流

    控制流 动机 本系列到目前为止 Chisel中的软硬件之间都有很强的对应关系 但引入控制流之后就不一样了 对软硬件的看法就应该有很大的分歧了 本节会在生成器软件和硬件中都引入控制流 如果重新连接到一个Chisel连线会怎么样呢 如何让一个多
  • 基于RISC-V架构的45条指令单周期CPU设计——第1章

    完整目录 完整代码和论文 指令选取 前言 本次设计选取 RV32I 和 RV32M 大部分可实现的指令 其中囊括 R 型 I 型 U 型 S 型 B 型 J 型指令 R 型指令 R 型指令格式 I 型指令 I 型指令格式 U 型指令 U 型
  • ESP32-C3入门教程 基础篇(五、RMT应用 — 控制SK6812全彩RGB 灯)

    测试第五课 本来是准备测试一下PWM驱动 SK6812 RGB灯 但是研究了一段时间 发现在ESP32 C3 有更好而且现成的方式 实现 SK6812 的控制 使用PWM也不是不可以 只是对于初学者 需要多花好多时间 所以本文还是先以ESP
  • 如何处理地址不对齐指令?

    连续不断是处理器取指的另一个目标 如果处理器在每一个时钟周期都能取一条指令 就可以源源不断的为处理器提供后续指令流 而不会出现空闲的时钟周期 地址不对齐导致问题 不管是从指令缓存 还是从ITCM中取指令 若处理器遇到了一条地址不对齐的指令
  • 基於RISC-V QEMU 仿真運行Linux 系統環境搭建

    前言 文章詳細說明如何從堶零開始基於RISC V QEMU 仿真運行Linux 系統環境搭建 是Linux 小白入門教程不二之選 歡迎留言討論 轉發請注明原文出處 1 準備QEMU 仿真環境 RISC V 64bits 安裝包下載地址 ht
  • 单周期RISC-V架构CPU的设计---设计篇

    目录 一 模块设计 1 pc reg v 1 1 功能说明 1 2 整体框图 1 3 接口列表 1 4 内部信号说明 1 5 关键电路 2 id v 2 1 功能说明 2 2 整体框图 2 3 接口列表 2 4 内部信号说明 2 5 关键电
  • 第二章 Scala入门——让你的代码跑起来

    一 Scala的安装方法 要使用Scala 首先需要保证已经安装好了Java 8 对于Linux操作系统 Java 8已经默认安装了 而使用Windows操作系统的用户 则需要在Java官网下载安装包进行安装 请在CMD PowerShel
  • 和你一起从零开始写RISC-V处理器(2)

    RISC V加法指令的实现 文章目录 RISC V加法指令的实现 上期回顾 一 正片开始 编写各个模块 pc reg模块 if模块 rom模块 if id模块 id模块 regs模块 id ex模块 ex模块 二 顶层模块搭建 三 测试文件
  • 八、RISC-V SoC外设——GPIO接口 代码讲解

    前几篇博文中注释了RISC V的内核CPU部分 从这篇开始来介绍RISC V SoC的外设部分 另外 在最后一个章节中会上传额外添加详细注释的工程代码 完全开源 如有需要可自行下载 目录 0 RISC V SoC注解系列文章目录 1 结构
  • Risc-V:能够利用 GCC 的简单 RV32I 实现的最低 CSR 要求

    对于能够运行 GCC 生成的机器代码的 RV32I 最低的 CSR 要求是什么 我正在考虑一个简单的基于 fpga 嵌入式 的实现 不需要虚拟内存或 Linux 支持 另外 我应该使用什么 GCC 标志来防止它使用未实现的 CSR 相关指令
  • 如何为 Risc-V(汇编语言)编写旋转操作 我们有像 8086 中那样的命令吗?

    我以前使用过8086的汇编语言 8086中的旋转操作只是一个命令 但我在 Risc V 汇编语言中找不到旋转操作的特定关键字 看起来扩展 B 最终应该定义这样的指令 在那之前你必须使用左移和右移来组合它 这是 MIPS32R2 rotrv
  • RISC-V 中 JAL 和 JALR 指令的偏移地址

    在 RISC V 规范中 JAL 和 JALR 指令中的立即数被转换为跳转偏移量 如下所示 将给定立即数符号扩展为 XLEN 位 将 LSB 设置为零 我对此有几个问题 问题1 对于 JAL 这给出了一个范围 000000000000 to
  • 在 C 中实现 SB 型 riscv 指令

    我遇到了一些问题 我尝试将 32 位二进制解码为 RISCV 架构集中的 SB 类型指令 我已经移动了操作码 imm rs1 rs2 和 rd 值 但未能获得正确的 IMM 值 例如对于以下 32 位二进制 1111111000000111
  • 为什么 RISC-V S-B 和 U-J 指令类型以这种方式编码?

    我正在读一本书 计算机组织与设计RISC V版 我遇到了 S B 和 U J 指令类型的编码 我上面提到的那些类型有奇怪的编码立即字段 S B 类型将直接字段分为两部分 这是有道理的 因为所有指令编码都必须相似 但我无法理解为什么立即字段以

随机推荐

  • 嵌入式Linux构建yaffs根文件系统

    嵌入式Linux构建yaffs根文件系统 开发环境说明 ubuntu1404 i686 天嵌光盘里的交叉编译链 版本4 4 3 busybox 1 13 0 下载地址 https busybox net downloads 一 编译busy
  • TQ2440移植u-boot2016.11全过程记录-【1】单板建立并启动

    TQ2440移植u boot2016 11 单板建立并启动 移植说明 u boot2016 11是S3C2440最后一版的uboot支持 所以选择了此版本进行移植 交叉编译器使用的是天嵌官方的交叉编译器 版本为4 4 3 使用的ubuntu
  • rsync随机启动脚本

    服务端 1 bin sh 2 chkconfig 2345 21 60 3 description Saves and restores system entropy pool for 4 create by xiaohu 5 2014 0
  • Dev-c++怎么设置背景色

    我们在使用Dev c 这个软件的时候 遇到夜晚等的条件下 希望使用一种暗一点的颜色 而默认的是白色的背景十分亮眼 如何进行设置呢 在教程的开始先附上设置后的效果图 显然这种背景更加适合晚上开发 话不多说 直接开始设置步骤 设置步骤 1 菜单
  • opencv-图片矫正

    转载 https www jianshu com p a1838972d1da 对于倾斜的图片通过矫正可以得到水平的图片 一般有如下几种基于opencv的组合方式进行图片矫正 1 傅里叶变换 霍夫变换 直线 角度 旋转 2 边缘检测 霍夫变
  • 英国程序员的工资

    我在英国做程序员工作将近2年了 接触到他们当地的一些的程序员 他们的大概工资如下 一个刚刚从学校毕业的计算机系大学生 月工资水平大概是2000到3000英镑左右 约合人民币3万至4 5万元 这是税前收入 英国是一个高税收高福利的国家 如果你
  • Windows上如何使用SWIG (c++ android 示例)

    SWIG介绍 SWIG Simplified Wrapper and Interface Generator 即简化包以及接口生成器 为脚本语言 tcl perl python等 提供了C和C 的接口 SWIG在1995年在Los Alam
  • 获取nan只能用numpy,不能用pandas

    a pd Series a b pd nan d AttributeError module pandas has no attribute nan a pd Series a b np nan d print a 0 a 1 b 2 Na
  • c语言输入并判断成绩等级

    输入并判断成绩等级 include
  • 华为OD机试 - 总最快检测效率(Java)

    题目描述 在系统 网络均正常的情况下组织核酸采样员和志愿者对人群进行核酸检测筛查 每名采样员的效率不同 采样效率为N人 小时 由于外界变化 采样员的效率会以M人 小时为粒度发生变化 M为采样效率浮动粒度 M N 10 输入保证N 10 的结
  • 数据结构与算法 各类数图概念集合

    拓扑排序 有向无环图才能进行拓扑排序 理解 就是在大学期间所有的课程 你只有先学完计算机基础 才能学更加高深的课程 从一个入度为0的点出发 找下一个一直到最后就是拓扑排序 前 中 后序排序 前 根左右 中 左中右 后 左右中 要确定一颗二叉
  • <毕业设计>最适合大学生的12个Java系统项目(附源码)

    就业 毕业设计 Java项目合集 小编给大家整理了12个Java系统项目 附源码 白嫖到底 最合适大学生学习的Java毕业设计教程合集 合集视频教程链接 https www bilibili com video BV1pB4y1h7Pr s
  • [Python爬虫] Selenium获取百度百科旅游景点的InfoBox消息盒

    前面我讲述过如何通过BeautifulSoup获取维基百科的消息盒 同样可以通过Spider获取网站内容 最近学习了Selenium Phantomjs后 准备利用它们获取百度百科的旅游景点消息盒 InfoBox 这也是毕业设计实体对齐和属
  • 1Panel 安装部署

    1Panel 是一个现代化 开源的 Linux 服务器运维管理面板 1 环境要求 安装前请确保您的系统符合安装条件 操作系统 支持主流 Linux 发行版本 基于 Debian RedHat 包括国产操作系统 服务器架构 x86 64 aa
  • Limit

    Mysql limit用法 select from test LIMIT 3 当 limit后面跟一个参数的时候 该参数表示要取的数据的数量 表示直接取前三条数据 以下的两种方式均表示取2 3 4三条条数据 select from test
  • R语言深度学习:智能客服聊天机器人

    目录 一 准备工作 二 数据预处理 三 构建模型 1 准备训练数据 2 构建seq2seq模型
  • Ubuntu18.04安装docker及nvidia docker、NVIDIA Container Toolkit

    1 卸载旧版docker sudo apt get remove docker sudo apt get remove auto remove docker sudo apt remove docker ce 如果上面方法都不行直接 使用d
  • PID控制算法学习与Matlab仿真

    文章目录 起因 算法原理 算法解析 调参小技巧 Matlab仿真 起因 PID控制算法应该是包括工业机器人等各种行业和领域中非常常用的一种控制算法了 了解这个算法的起因是在稚晖君开发的自行车项目中见到 后来在北理工组会中了解到PID控制算法
  • ssrf漏洞描述

    ssrf是一种由攻击者构造请求 由服务端发起请求的安全漏洞 一般情况下 ssrf攻击的目标是外网无法访问的内部系统 ssrf漏洞原理 ssrf的形成大多是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制 例如 服务
  • 玄铁C910总览

    一 开源玄铁C910简介 玄铁C910是由平头哥设计并开源的高性能CPU 基于开源的RISC V指令集 主要面向对性能要求严格的边缘计算领域 如边缘服务器 边缘计算卡 高端机器视觉 高端视频监控 自动驾驶 移动智能终端 5G 基站等 玄铁C