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

南山网站设计多少钱网站主机名是什么

南山网站设计多少钱,网站主机名是什么,jsp网站开发详解书,百度网站建设流程【RISC-V设计-06】- RISC-V处理器设计K0A之ALU 文章目录 【RISC-V设计-06】- RISC-V处理器设计K0A之ALU1.简介2.顶层设计3.内部结构4.端口说明5.操作码说明6.设计代码7.总结 1.简介 算术逻辑单元(Arithmetic Logic Unit,简称 ALU)是计算机中…

【RISC-V设计-06】- RISC-V处理器设计K0A之ALU

文章目录

  • 【RISC-V设计-06】- RISC-V处理器设计K0A之ALU
    • 1.简介
    • 2.顶层设计
    • 3.内部结构
    • 4.端口说明
    • 5.操作码说明
    • 6.设计代码
    • 7.总结

1.简介

算术逻辑单元(Arithmetic Logic Unit,简称 ALU)是计算机中央处理器(CPU)的核心组成部分之一,负责执行各种算术和逻辑运算。在本设计中,ALU模块具有两个作用,一是对所有运算指令操作数的处理,二是对跳转指令地址的处理。

2.顶层设计

3.内部结构

ALU模块包含两个加法器,分别称之为运算加法器地址加法器,运算加法器在本设计中具有多重用途,如下

  1. 执行加法运算,本设计中包含一个33bit+33bit的全加器,含最低位进位;
  2. 执行减法运算,根据规则,减去一个数等于加上这个数的取反再加一;
  3. 执行无符号比较运算,根据规则,小数减大数需要向高位借位;
  4. 执行有符号比较运算,根据规则,补码变换为移码后,单调性不变,再应用3)无符号比较运算;

考虑到在执行条件跳转指令时,既需要ALU执行比较运算(也即加法运算),同时又需要计算地址偏移,一个加法器显然是不夠的,因此,ALU内部还包含一个20bit+20bit的加法器,用于地址的运算。此加法器为20bit加法器,位宽相对较小,不经过其它复用逻辑,直接运算,可为执行加载存储指令的地址的送出提供一定的时序裕量。

ALU内部包含两个移位电路,分别是逻辑左移和逻辑右移。为了节省资源,算术右移并没有单独再使用一个移位器,而是通过同时调用逻辑左移和逻辑右移来实现。如下图

ALU内部包含一个异或电路,用来执行异或指令,同时,也用于判断两个操作数rs1和rs2是否相等,异或逻辑的输出后接了一级和0比较的比较器。如下图

ALU内部包含一个逻辑与电路和一个逻辑或电路,用于执行与、或等逻辑指令。考虑到与、或逻辑相对比较简单,为了时序上的优化,所以CSR相关的指令并没使用ALU。如下图

4.端口说明

序号端口位宽方向说明
1idu2alu_op4输入ALU的操作码,来自指令译码单元
2idu2alu_rs132输入运算的第一操作数,来自指令译码单元
3idu2alu_rs232输入运算的第二操作数,来自指令译码单元
4alu2idu_res32输出数值运算的结果,送给指令译码单元
5alu2idu_cmp1输出比较运算的结果,送给指令译码单元
6idu2alu_addr120输入地址运算的第一操作数
7idu2alu_addr220输入地址运算的第二操作数
8idu2alu_addro20输出地址运算的输出结果

5.操作码说明

操作码指令功能数值结果比较结果指令
4‘b0000add算术运算,加法res = rs1 + rs2----add, addi, auipc
4’b1000sub算术运算,减法res = rs1 - rs2----sub
4’b0001sll逻辑运算,左移res = rs1 << rs2[4:0]----sll, slli
4‘b1010slt比较运算,有符号小于----cmp = rs1 < rs2 ? 1’b1 : 1’b0slt, slti
4’b0011sltu比较运算,无符号小于----cmp = rs1 < rs2 ? 1’b1 : 1’b0sltu, sltiu
4’b0100xor逻辑运算,异或res = rs1 ^ rs2----xor, xori
4’b0101srl逻辑运算,逻辑右移res = rs1 >> rs2[4:0]----srl, srli
4’b1101sra逻辑运算,算术右移res = rs1 >>> rs2[4:0]----sra, srai
4’b0110or逻辑运算,或res = rs1 | rs2----or, ori
4’b0111and逻辑运算,与res = rs1 & rs2----and, andi
4‘b0100beq条件转移,相等跳转----cmp = rs1 == rs2?1’b1:1’b0beq
4‘b0100bne条件转移,不等跳转----cmp = rs1 == rs2?1’b1:1’b0bne
4’b1010blt条件转移,有符号小于跳转----cmp = rs1 < rs2?1’b1:1’b0blt
4’b0011bltu条件转移,无符号小于跳转----cmp = rs1 < rs2?1’b1:1’b0bltu
4’b1010bge条件转移,有符号大于等于跳转----cmp = rs1 < rs2?1’b1:1’b0bge
4’b0011bgeu条件转移,无符号大于等于跳转----cmp = rs1 < rs2?1’b1:1’b0bgeu
注:1)操作码的定义基本沿用了指令集中的操作码,指令译码器可以直接从指令中提取操作码,减少指令译码器的译码逻辑电路。2)在执行auipc指令时,由于是32位运算,且执行此指令时ALU加法器并未工作,借用了ALU中运算加法器。

6.设计代码

// -------------------------------------------------------------------------------------------------
// Copyright 2024 Kearn Chen, kearn.chen@aliyun.com
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
// 
//     http://www.apache.org/licenses/LICENSE-2.0
// 
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// -------------------------------------------------------------------------------------------------
// Description :
//             1. Arithmetic and Logic Unit
// -------------------------------------------------------------------------------------------------module k0a_core_alu (input  wire [3:0]   idu2alu_op    ,input  wire [31:0]  idu2alu_rs1   ,input  wire [31:0]  idu2alu_rs2   ,output wire [31:0]  alu2idu_res   ,output wire         alu2idu_cmp   ,input  wire [19:0]  idu2alu_addr1 ,input  wire [19:0]  idu2alu_addr2 ,output wire [19:0]  alu2idu_addro
);wire op_add  = idu2alu_op[2:0] == 3'b000;
wire op_sll  = idu2alu_op[2:0] == 3'b001;
wire op_slt  = idu2alu_op[2:0] == 3'b010;
wire op_sltu = idu2alu_op[2:0] == 3'b011;
wire op_xor  = idu2alu_op[2:0] == 3'b100;
wire op_srl  = idu2alu_op[2:0] == 3'b101;
wire op_or   = idu2alu_op[2:0] == 3'b110;
wire op_and  = idu2alu_op[2:0] == 3'b111;wire [31:0] alu_and = idu2alu_rs1 & idu2alu_rs2;
wire [31:0] alu_or  = idu2alu_rs1 | idu2alu_rs2;
wire [31:0] alu_xor = idu2alu_rs1 ^ idu2alu_rs2;wire [31:0] alu_inv = idu2alu_rs2 ^ {32{idu2alu_op[3]}};wire [32:0] alu_in1 = {1'b0, op_slt ^ idu2alu_rs1[31], idu2alu_rs1[30:0]};
wire [32:0] alu_in2 = {idu2alu_op[3], op_slt ^ alu_inv[31], alu_inv[30:0]};wire [32:0] alu_add = alu_in1 + alu_in2 + idu2alu_op[3];wire [31:0] alu_srs = idu2alu_op[3] ? {{31{idu2alu_rs1[31]}}, 1'b0} : idu2alu_rs1;wire [31:0] alu_sll = alu_srs << alu_inv[4:0];
wire [31:0] alu_srl = idu2alu_rs1 >> idu2alu_rs2[4:0];
wire [31:0] alu_sra = {32{idu2alu_op[3]}} & alu_sll | alu_srl;wire alu_zero = alu_add[31:0] == 32'd0;wire alu_slt = (op_slt | op_sltu) & alu_add[32];assign alu2idu_res = {32{op_add}} & alu_add[31:0]  | {32{op_and}} & alu_and |{32{op_xor}} & alu_xor        | {32{op_or }} & alu_or  |{32{op_sll}} & alu_sll        | {32{op_srl}} & alu_sra |{31'd0, alu_slt};assign alu2idu_cmp = op_add & alu_zero | alu_slt;assign alu2idu_addro = idu2alu_addr1 + idu2alu_addr2;endmodule

7.总结

本文介绍了RISC-V架构所需的基本算术和逻辑运算的ALU实现。通过不同的操作码,可以执行多种运算,支持处理器的指令集执行。得益于较为规整的RISCV指令集,ALU的op操作码的定义和指令集的定义基本一致,避免了指令译码器先译码再编码的过程,操作码可直接从指令中提取,简化了逻辑,优化了时序和面积;多功能复用的运算加法器,通过一个加法器,实现了加法、减法、无符号、有符号比较等多种运算的统一,避免了逻辑功能的重复与浪费;算术右移逻辑复用同时复用了逻辑左移和逻辑右移,避免了再使用一个移位器,进一步压缩了面积。

http://www.yayakq.cn/news/922369/

相关文章:

  • 网站开发就业前景怎么样成都百度百科推广
  • 网站怎么用栏目做地区词可以做结构式的网站
  • 制作网站软件免费memory wordpress
  • 大型网站建设行情余姚哪里有做淘宝网站的
  • 购物网站模板html凡科建站网站
  • 在公司平台做网站竞拍mvc做的网站如何发布访问
  • 专业网站优化报价网站对公司的意义
  • 株洲专业网站建设品牌北京建设集团网站
  • 国外企业招聘网站个人网站购买
  • 虚拟服务器怎样做网站做像58这种分类信息网站赚钱吗
  • 用国外服务器做网站网站网络推广方案的概念
  • 高端大气的科技网站赤峰seo
  • 南充微网站建设商城网站租服务器安全不
  • 家在宝安赣州网站建设优化服务
  • cnzz站长统计怎么添加到博客网站设计网站的功能有哪些
  • 做电影网站用的云盘成都网站开发团队
  • 益阳建设企业网站环保网站 怎么做
  • 地税局内网网站建设广告流量投放
  • 三河市城乡建设局网站百度账号申请注册
  • 大连零基础网站建设教学电话潍坊市企业型网站建设
  • 重庆潼南网站建设公司电话南京软件定制开发
  • 深圳市宝安区住房和建设局网站开发公司已开发完成楼盘土地证能否出让
  • 常州制作网站成都画册设计的公司
  • 网站右侧 回到顶部做网站怎么申请百度推广
  • 淘宝客手机网站企业网站服务器的选择
  • 中国建设银行沈阳铁西支行网站软件商城免费下载 app
  • 网站建设方案风险分析结合七牛云 做视频网站
  • 做网站在哪个地方买空间网络营销做得好的品牌
  • 河南定制网站建设报价北京智能建站系统价格
  • 平台网站建设有哪些wordpress 遍历分类