E906的编程模型|学习笔记

简介: 快速学习 E906的编程模型

开发者学堂课程【高校精品课-大连理工大学-计算机组织与结构: E906的编程模型】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/3/detail/16050


E906的编程模型

 

内容简介

一、工作模式寄存器视图

二、数据格式

三、字节序

 

一、工作模式及寄存器视图

E906有两种工作模式,一种是用户模式,一种是机器模式

image.png

用户模式下能够访问的资源较少,机器模式可以访问所有的资源虚线左侧是用户模式可以看到的寄存器。机器模式实际上是可以看到虚线左侧右侧所有寄存器。在这些寄存器中,有的是实线框,有的是虚线框,实线框是RISC-V标准的寄存器虚线框的是 E906对 RISC-V 做的拓展。

在用户模式下有通用寄存器浮点寄存器浮点控制寄存器浮点拓展状态寄存器用户模式性能监测寄存器,有性能监测模块有对应的寄存器,还有定点运算溢出饱和状态寄存器,这个是用户模式可以看到的

除此之外在机器模式下还可以看到信息寄存器异常配置寄存器异常处理寄存器Click 寄存器,这主要是处理中断的,还有内存保护寄存器,还有 E906的一些扩展寄存器以及机器模式下的性能检测寄存器,这个就是它的两种工作模式和寄存器视图。

 

二、数据格式

image.png

左侧是高位,右侧是低位,它支持单字节有符号数,整个寄存器的长度是32位,从 bit0到 bit31 32位,单字节数据只有8位,有符号只有七位是数据本身,bie7是符号,由于他是有符号数,从第八位到第31位取决于第七位,若第七位是符号那么后面就是0,若若第七位是负数那后面就是1,这是单字节的有符号数。单字节的无符号数的最低八位每一位都是数值没有符号,它的高24位全写作零,这个就是单字节的无符号数半字有符号数是从 bit0直到bit15实际上是数,包括15位的数值和一的符号,它的高16倍就和 bit15保持一致如果是半无符号数,就是第16位全部是,高16位全部是零。

字有符号数就是第31位是数值本身,第31位也就是 bit31是符号,如果是字类型的无符号数,整体32倍,全都是数值部分,这是整数的数据格式。

浮点型数据

-E906浮点单元遵从 RISC-V 标准,兼容 IEEE750-2008浮点协议,支持点精度和双精度运算

-当 E906硬件配置了双精度浮点类型时,单精度数据只使用64位浮点寄存器的低32位,高32位必须全部是1

image.png

对于单精度浮点数来说他的两个字分别是从第0位到第31位以及第32位到第63位,从第0位到第22位是他的小数部分,从23到30是他的指数部分,第31位是他的数符,32到63位必须保证是1。

对于双精度浮点数来说,完整的64位都是用来表示这个数本身的从零到31也就32位,再加上另一个字的32到51,整个都表示它的小数部分,高位字从52到62是它的指数部分第63位是他的数的符号。

 

三、字节序

image.png

字节序数据的高低位和内存的高低位之间的对应关系E906只支持小端模式小端模式就是数据的位保存在地址的低位数据的高位保存在地址的高位

在地址 A 处有一个字,它是32位机,所以一个字就是32位32位就是四个字节,这四个字节就保存在1234这四个位置,并且他的数的第一位 Byte0保存在地址的第一位,然后数的最高位 Byte3保存在地址的最高位,这就是一个典型的小端存储模式对于半也是一样,半字是16位的低字节保持数的字节保持数的高位,对于一个字节来说只有八,那就放到整个地址的最低部分。

相关文章
|
2月前
|
存储 C++
【C++】——基础编程
【C++】——基础编程
53 1
|
26天前
|
开发框架 监控 .NET
【学习笔记】Verilog之三:行为建模方法
Verilog是一种硬件描述语言,用于模拟电子系统的结构和行为。行为建模是Verilog的一种方法,分为数据流行为建模和顺序行为建模。 数据流行为建模主要使用`assign`语句,它描述了电路的功能而不涉及具体结构。连续赋值语句(`assign`)用于给线网分配值,当右端表达式发生变化时,新值会立即赋给线网。此外,还有时延的概念,可以指定赋值或事件发生的延迟时间。
|
2月前
|
存储 SQL 人工智能
从 CodeGemma 到 CodeQwen1.5:开源编程大模型百家争鸣
笔者最近刚刚试用完 CodeGemma ,准备分享我的心得时,通义千问的 CodeQwen1.5 就也悄然发布。本文主要介绍 CodeQwen1.5 这款开源编程大模型,并展示如何在 VSCode 中使用它帮你提升编程体验。
558 0
从 CodeGemma 到 CodeQwen1.5:开源编程大模型百家争鸣
|
2月前
|
Python 容器 机器学习/深度学习
Python语言基础学习大纲(由某大模型生成)
Python语言基础学习大纲(由某大模型生成)
58 0
Python语言基础学习大纲(由某大模型生成)
|
12月前
|
前端开发 JavaScript 算法
如何有效地学习编程?
如何有效地学习编程?
204 0
|
2月前
|
Java C++ Python
如何开始学习编程
如何开始学习编程
85 0
|
7月前
|
机器学习/深度学习 人工智能 IDE
编程基础
编程基础
41 2
|
11月前
|
机器学习/深度学习 自然语言处理 监控
手把手教你强化学习 (二) 强化学习的直观理解和基本概念
手把手教你强化学习 (二) 强化学习的直观理解和基本概念
|
机器学习/深度学习 算法 开发者
模型原理-2| 学习笔记
快速学习模型原理-2。
91 0
模型原理-2| 学习笔记
|
机器学习/深度学习 算法 开发者
模型原理-1| 学习笔记
快速学习模型原理-1。
119 0
模型原理-1| 学习笔记