计算机系统基础第四周

RISC-V架构

RISC-V (读作 "RISC Five" 或 "RISC 5") 是一个开源硬件指令集架构 (ISA),它基于精简指令集计算 (RISC) 原则。与其他计算架构(如x86,ARM,MIPS等)不同,RISC-V 是自由和开源的,这意味着任何人都可以使用该架构而无需支付许可费。

深入介绍

RISC-V 基于精简指令集的原则,这意味着它使用简单、固定大小的指令,这样可以简化硬件实现并提高性能。

模块化

RISC-V 是模块化的。这意味着基础 ISA 可以通过额外的扩展来增强。例如,它有一个整数指令集,然后有额外的浮点、原子和其他指令集扩展。这种模块化设计允许设计师选择他们需要的特定功能,而不是被迫接受所有功能。

基本指令集

RISC-V 定义了几种基本的指令集变种,主要基于寄存器的宽度:(了解)

  • RV32I: 32位整数指令集
  • RV64I: 64位整数指令集
  • RV128I: 128位整数指令集

扩展

除了基本指令集之外,RISC-V 定义了一系列扩展,用于增加额外的功能,如:

  • M: 乘法和除法指令
  • A: 原子指令,用于并发控制
  • F: 单精度浮点指令
  • D: 双精度浮点指令

应用

RISC-V 已经在多种应用中被采用,从嵌入式系统和物联网设备到更复杂的计算系统,如服务器和超级计算机。

总结

RISC-V 为计算架构带来了一个新的开放视角,它不仅为研究者和设计师提供了一个自由和灵活的工具,还为整个计算产业带来了新的机会。尽管 RISC-V 还年轻,但其快速增长的社区和生态系统证明了它的潜力和影响力。


超多参数情况下,怎么存储?

在RISC-V或任何其他架构中,当你需要传递的参数数量超过了可用寄存器的数量时,你可以使用堆栈来传递额外的参数

以下是处理此情况的常用方法:

1. 使用堆栈存储额外参数(重点)

  • 将参数压入堆栈: 如果寄存器不足以保存所有的函数参数,可以将额外的参数放入调用函数的堆栈帧中
  • 调整堆栈指针: 在将参数压入堆栈后,调整堆栈指针以分配必要的空间。
  • 在被调用函数中访问堆栈参数: 被调用的函数可以使用堆栈指针(或帧指针)偏移量来访问堆栈中存储的参数

2. 使用内存

  • 存储在内存中: 参数也可以存储在内存的其他位置(例如,全局内存或堆内存),并将指向这些内存位置的指针或引用作为参数传递。

3. 参数块

  • 使用数据结构: 如果有很多参数,可以将它们组合成一个结构或数组,并传递一个指向该结构或数组的指针。

其他

寄存器与RAM

CPU的寄存器是非常高速小容量存储区域,它们位于CPU内部,用于存储临时数据和指令,以便CPU快速访问和执行。相比之下,RAM(随机访问存储器)虽然也是相对快速的,但它的速度远远低于CPU寄存器。其速度相差约10倍。

由于RAM和CPU中的寄存器的计算速度差异很大,所以把a的初始值读到寄存器中,经过很多运算,将最后结果放到RAM中,使其生效。这样可以通过减少CPU与RAM之间的数据传输,显著提高计算效率和性能。这种方法主要用于那些需要频繁和快速计算的场景。

ALU操作

  1. 一般情况下,ALU是用来对寄存器中的值进行操作的。这意味着,大多数情况下,ALU从寄存器中取值,进行运算,然后将结果存回寄存器或内存中。

  2. 一些ALU操作(例如blt(小于跳转)和ble(小于或等于跳转)通常不允许直接操作常量值(或立即数)。这是因为这些操作通常用于比较和分支,它们需要引用存储在寄存器或内存中的变量值,在比较之前必须保证两个数都已经在寄存器中临时存储。但是像addi这样的ALU指令是能够直接处理立即数的,所以ALU操作既可以与寄存器打交道,也可以直接操作立即数,这是根据每种指令集架构(ISA)自己的规则和限制来制定的。

你可能感兴趣的:(计算机系统基础,编辑器)