1.2[hardware][day2]

server/2025/1/6 7:14:13/

confreg(配置寄存器)

  • 功能概述
    • 在这个 SoC(片上系统)设计中,confreg是用于存储系统配置信息的寄存器模块。它通过 AXI(Advanced eXtensible Interface)接口与其他模块进行通信,接收和发送配置相关的数据

R 型指令

  • 常见指令add $rd,$rs,$rt(加法)、sub $rd,$rs,$rt(减法)、and $rd,$rs,$rt(逻辑与)、or $rd,$rs,$rt(逻辑或)等。
  • 五级流水线运行过程
    • 取指阶段(IF):从指令存储器中取出指令,同时程序计数器(PC)的值递增,指向下一条指令的地址。
    • 译码阶段(ID):对取出的指令进行解码,从寄存器堆中读出rsrt指定的寄存器中的值。
    • 执行阶段(EX):ALU 根据指令的功能码(funct)确定要执行的操作,对从寄存器堆读出的rsrt的值进行相应运算。
    • 访存阶段(MEM):R 型指令一般不涉及内存访问,此阶段直接跳过。
    • 写回阶段(WB):将 ALU 运算的结果写回到寄存器堆中rd指定的寄存器

I 型指令

  • 常见指令:包括立即数操作指令和分支指令,如addi $rt,$rs,immediate(立即数加法)、lw $rt,offset($rs)(从内存加载字到寄存器)、sw $rt,offset($rs)(将寄存器中的字存储到内存)、beq $rs,$rt,label(相等则跳转)、bne $rs,$rt,label(不相等则跳转)等。

  • 数据处理速度匹配:寄存器是 CPU 内部的高速存储单元,其读写速度极快,能与 CPU 的运算速度相匹配。而内存的读写速度相对较慢,如果 CPU 直接从内存获取数据进行运算,会因内存读写速度的限制而大大降低 CPU 的运算效率。例如,在执行一条简单的加法指令时,如果操作数在寄存器中,CPU 可以在一个时钟周期内完成读取和运算;但如果操作数在内存中,可能需要多个时钟周期才能完成数据的读取,这会严重影响整体的运算速度1。
  • 指令集架构设计:MIPS 是一种精简指令集计算机(RISC)架构,其指令集设计强调寄存器的使用。大多数 MIPS 指令都被设计为对寄存器中的数据进行操作。例如,加法指令add $t0, $t1, $t2是将寄存器$t1$t2中的值相加,结果存放在寄存器$t0中,这种设计方式使得指令的执行更加高效和简洁。

内存和 CPU 中的寄存器存在以下关系:

  • 数据存储的不同层次:寄存器是内存层次结构中的最顶端,是系统获得操作资料的最快速途径。内存则处于存储层次的较低层,容量通常比寄存器大得多,但速度比寄存器慢。可以将寄存器看作是 CPU 与内存之间的高速缓冲,用于暂存 CPU 即将使用或刚刚处理完的数据,以减少 CPU 访问内存的次数,提高系统性能1。
  • 数据传输与交互:CPU 在需要处理数据时,会首先将内存中的数据加载到寄存器中,运算完成后,再将寄存器中的结果写回到内存中。例如,当程序需要读取一个变量的值进行计算时,CPU 会发出内存读取指令,将变量从内存中读取到寄存器中,然后在寄存器中进行计算,计算结束后再将结果写回内存中对应的存储位置。
  • 功能上的协作:寄存器和内存共同为 CPU 的运算和指令执行提供支持。寄存器用于临时存储数据和指令,方便 CPU 快速访问和操作;内存则用于长期存储程序和数据,为 CPU 提供数据来源和结果存储的空间。它们在计算机系统中相互配合,使得计算机能够高效地运行各种程序和任务

 

  • op:操作码,用于确定指令类型,如加载 / 存储(lwsw)、立即数运算(addi等)、分支(beqbne)等操作。
  • rs:源寄存器。
  • rt:目的寄存器(对于加载 / 存储操作,rt是源 / 目的寄存器;对于立即数运算,rt是目的寄存器;对于分支操作,rtrs用于比较)。
  • immediate:立即数,在加载 / 存储操作中是偏移量,在立即数运算中是操作数,在分支操作中是相对偏移量。

  1. J 型指令格式

    • 格式:op(6 bits) + address(26 bits)
    • 解释:
      • op:操作码,用于确定跳转操作类型,如j(无条件跳转)、jal(跳转并链接)等。
      • address:跳转目标地址的低 26 位,高 4 位由 PC + 4 的高 4 位补充得到跳转目标地址。
    • 例如,j address指令,其机器码为000010 address

  • 主要任务
    • 根据译码阶段确定的指令类型和操作数进行相应的运算或操作。对于算术逻辑指令(如加法、减法、逻辑与 / 或等),使用算术逻辑单元(ALU)对操作数进行计算。例如,对于加法指令,ALU 会将两个操作数相加。
    • 在一些指令(如分支指令和加载 / 存储指令)中,执行阶段还需要计算分支目标地址或内存访问地址。例如,对于分支指令 “beq $t1, ,需要判断t1和$t2 是否相等,如果相等,则计算分支目标地址(通常是 PC + offset);对于加载 / 存储指令 “lw t1)”,需要计算内存访问地址($t1 的值 + offset)。
  1. 写回(Write Back,WB)阶段

    • 主要任务
      • 将访存阶段得到的数据或者执行阶段的运算结果写回到目的寄存器中。对于加载指令,将从内存读取的数据写入指定的目的寄存器;对于算术逻辑指令,将 ALU 的运算结果写入目的寄存器。这样,寄存器中的数据就得到了更新,可以被后续的指令使用。
    • 举例说明
      • 对于 “lw t1)” 指令,将访存阶段读取到的 0x00000010 写回到$t0寄存器。对于“add $t0, $t1, 指令,将执行阶段计算得到的写回到t0寄存器。之后,如果有指令需要使用$t0 寄存器中的数据,就可以获取到更新后的值。

执行阶段的主要任务包括 ALU 运算,但不限于此

  • 算术逻辑运算(ALU)
    • 核心运算部分:在执行阶段,ALU 运算确实是非常重要的部分。对于算术指令(如加法、减法、乘法、除法)和逻辑指令(如与、或、非、异或),ALU 会根据指令译码阶段确定的操作类型,对操作数进行相应的计算。例如,对于加法指令 “add $t0, $t1, ,会将t1 和寄存器中的值相加,得到的结果将用于后续阶段(如写回阶段存入t0 寄存器)。
    • 运算依据:ALU 的操作类型是由指令的操作码(Opcode)以及可能的功能码(Funct)决定的。在译码阶段识别出这些代码后,控制信号会引导 ALU 执行正确的运算。例如,在 MIPS 指令集中,不同的操作码和功能码组合可以指定 ALU 执行不同的算术或逻辑操作。
  • 地址计算
    • 分支指令相关地址计算:对于分支指令(如 “beq $t1, $t2, offset”),执行阶段需要计算分支目标地址。这通常涉及到将当前程序计数器(PC)的值与指令中的偏移量(offset)相加。例如,如果 PC 当前值为 0x00400000,偏移量为 0x00000010(指令中编码的立即数),那么分支目标地址为 0x00400010。这个计算出的地址将用于判断是否进行分支跳转。
    • 加载 / 存储指令相关地址计算:在加载(如 “lw t1)”)和存储(如 “sw t2)”)指令中,需要计算内存访问地址。这个地址是由基地址寄存器(如或t2)的值和指令中的偏移量(offset)相加得到的。例如,$t1 的值为 0x1000,偏移量为 0x0010,那么内存访问地址为 0x1010。
  • 指令的特殊操作执行
    • 移位操作:有些指令可能涉及移位操作,如左移(“sll”)或右移(“srl”)指令。在执行阶段,需要对操作数进行相应的移位处理。例如,对于 “sll $t0, 指令,会将t1寄存器中的值左移2位,结果存入$t0 寄存器。这种移位操作虽然可以看作是一种特殊的算术操作,但它不是典型的 ALU 加法或减法运算。
    • 特殊指令的执行逻辑:一些特殊指令,如系统调用指令(用于请求操作系统服务)或协处理器指令(用于与特定的协处理器交互),在执行阶段也有其特定的操作。这些操作可能不涉及传统的 ALU 运算,而是通过触发特定的硬件机制或与其他硬件模块协作来完成任务。例如,系统调用指令可能会暂停当前程序的执行,将控制权转移到操作系统内核的特定处理程序

 


http://www.ppmy.cn/server/155739.html

相关文章

《机器学习》——逻辑回归(过采样)

文章目录 什么是逻辑回归和过采样?实例1、实例内容2、步骤 什么是逻辑回归和过采样? 逻辑回归是一种用于二分类(有时也用于多分类)问题的统计模型。它通过将线性组合的输入变量经过一个逻辑函数(如 sigmoid 函数&…

图数据库 | 17、高可用分布式设计(上)

我们在前面的文章中,探索了多种可能的系统扩展方式,以及每种扩展方式的优劣。 本篇文章将通过具体的架构设计方案来对每一种方案的设计、投入产出比、各项指标与功能,以及孰优孰劣等进行评价。 在设计高性能、高可用图数据库的时候&#xf…

基于Java+SQL Server实现的(GUI)会展中心管理系统

基于java实现的会展中心管理系统 1 系统设计 1.1设计目标 在学习了数据库原理和SQL Server 2008数据库管理系统后,采用Java编程语言开发工具,设计并实现会展中心管理系统。 本课程的目的是培养学生数据库技术的综合应用能力,通过设计开发…

Redis Hash哈希

个人主页:C忠实粉丝 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C忠实粉丝 原创 Redis Hash哈希 收录于专栏[redis] 本专栏旨在分享学习Redis的一点学习笔记,欢迎大家在评论区交流讨论💌 目录 概述 常见命令 HSET …

TinaCMS: 革命性的开源内容管理框架

在如今的数字时代,高效的内容管理系统(CMS)已成为构建内容丰富网站和应用程序的必需品。传统 CMS,如 WordPress 和 Drupal,功能丰富但复杂度高。而新一代 CMS,例如 TinaCMS,以其灵活性和开发者友…

Web3对跨境支付系统的潜在影响与发展前景

近年来,Web3技术凭借其去中心化和开放性的特点,逐渐受到各界关注。跨境支付系统作为全球化的重要桥梁,其发展正面临效率、透明性和互操作性等方面的挑战。而Web3的引入为跨境支付系统的优化提供了全新思路。本文将探讨Web3在这一领域的潜在影…

面向实习的Golang服务端技能分析

背景: 这个文章就当总纲看吧,没什么内容,大概是我的一个学习计划 首先,该文章是我希望大二暑期能够找到Go后端开发岗位实习机会,结合boss、2024版go学习路线以及我一个go萌新的现有技能做出的大约四个月时间掌握开发…

题海拾贝:[USACO3.4] 美国血统AmericanHeritage(求先序排列问题)

Hello大家好&#xff01;很高兴我们又见面啦&#xff01;给生活添点passion&#xff0c;开始今天的编程之路&#xff01; 我的博客&#xff1a;<但凡. 我的专栏&#xff1a;《编程之路》、《数据结构与算法之美》、《题海拾贝》 欢迎点赞&#xff0c;关注&#xff01; 1、求…