读书专题:手把手教你设计CPU第一章【RISC-V处理器】


1、写在前面的话

最近拿到一本书,叫做手把手教你设计CPU(RISC-V处理器),看到这个RISC的关键字,突然有些激动,可能也是因为同时在学ARM的原因吧。为此,准备仔细阅读下这书,写篇博客记录奥,这里是第一章 一文读懂CPU之三生三世。


2、CPU的众生相


01 指令集架构

手里有这本书的朋友,看到这大标题可能反应差不多,可能这本书偏趣味性,不知道了,继续看下。

CPU:Central Processing Unit,全称中央处理器单元,简称处理器。

CPU和Core的区别,平时我们讲的CPU通常指的是一块完整的SoC(处理器核Core+内部外设),在没有系统学习嵌入式的时候,很少有人会听到这个概念,因为习惯的原因,很多人也会把CPU误认为就是处理器核,忽略了内部外设,这是很糟糕的想法。
总之,我们平时多遇到的也是SoC(System on Chip),记住就好了。

CPU的核心-指令集架构,书上给了一张知名CPU指令集架构的诞生表,里面有吸引我的是这几个,我记录下:
Intel 8086的CPU指令集架构-1978年
ARM的CPU指令集架构–1985年
MIPS的CPU指令集架构–1985年(单字长定点指令平均执行速度)
Alpha的CPU指令集架构–1992年(阿尔法)
AMD64的CPU指令集架构(EMT64)–2003年

指令:一组处理器进行操作的最小单元(比如:加减乘除、读写存储器等)。

指令集架构:有时也说是“架构”或“处理器架构”,这个东西课本上没有定义,个人认为可以理解为在指令集(指令集合)的基础上,进一步添加一些规则之类的构成的一个层。注意,这里出现了分层的概念,简简单单的先分了三个层:硬件层、指令集架构层和软件层。
不难发现,其实位于中间一层的指令集架构实际上是对一种相似硬件的描述,只要这个指令集架构是一样的(具体硬件层的实现方案微架构性能和成本会有不同),软件都无需做任何修改地能在同一款指令集架构的处理器上去运行。
这点特别重要,因为软件是很复杂的,如果让硬件去适应软件,那么带来的第一个问题就是,硬件层出不穷,设计不便。因此,这种设计是合理的,我们需要让软件去适应硬件,在给定指令集架构的帮助下,完成对各种顶层功能的实现。

指令集架构不仅仅是一组指令的集合,它还要定义任何软件程序员需要了解的硬件信息,包括:数据类型、存储模型、软件可见的处理器状态、指令集、系统模型和外部接口(课本上有图,看着挺详细的)。

其实,从这点就不难发现,汇编语言难学的主要原因在于,我们学的时候,需要和相应的CPU指令集架构进行一对一的学习,不同指令集架构设计的CPU,汇编语言是不一样的,需要记忆的东西比较多,这里我想到了两款架构:X86和ARM。

X86架构:泛指一系列基于Intel 8086且向后兼容的中央处理器指令集架构。最早的8086处理器于1978年由Intel推出,为16位微处理器。
ARM:一个32位元精简指令集中央处理器架构。
现在我在学习的基本上都是ARM架构的,以后又没有机会去碰X86的就不知道了,也许有吧,应该也有类似点。


02 CISC和RISC

CISC:复杂指令集(Complex Instruction Set Computer),不仅包含处理器常用的指令集,还包含了许多不常用的特殊指令,指令数目比较多,我记得好像有200多条。
RISC:精简指令集(Reduced Instruction Set Computer),只包含常有处理器常有的指令,对于不常用的操作,需要通过执行多条常有指令的方式来达到同样的效果。

读到这里,我开始有些想法了,这两个概念在听朱老师的视频时,讲的特别详细。首先,Intel是CISC,ARM是RISC的,RISC的诞生其实是迫不得已的,当时那个年代,基本上都是CISC的天下,很多事情,设计CPU的人已经实现了,我们只需要在这个基础上进行指令背诵和开发就好了,而RISC不一样,CPU只实现了一小部分,很多东西,其实需要程序员自己去实现,提高了灵活性。

当时的ARM被迫设计了RISC,却收获了意想不到的成绩,因为CISC随着发展,出现了很多问题,其中最为明显的就是功耗和面积:当今社会,电子产品如果不谈功耗,基本上就是一个废品,以前还行,现在人们日常的移动设备,耗电迅速的产品很快就会被市场淘汰,要不然低功耗算法设计的相关职位,也成为现在的热门。CISC由于指令越来越多,实现的功能越来越复杂,但是实际开发过程中,可能不会用到这么多指令,按书上说的,基本上只用到了20%,剩下的80%只能说是以备不时之需啊,可这些东西都是硬件电路实现的,如果一插上电源,CPU就会运转相关的电路,难免有无需损耗的电能流失,不经耗电快,发热也快,造成CPU老化迅速,并且设计硬件的时间成本和面积都是需要着重考虑的。


### 回答1: 很高兴听到您对RISC-V处理器设计感兴趣。以下是一些基本步骤,可以帮助您开始设计自己的RISC-V处理器: 1. 确定处理器的需求和规格:在设计处理器之前,您需要确定处理器的需求和规格。这包括处理器的性能、功耗、指令集等方面。 2. 学习RISC-V指令集架构:RISC-V是一种开放的指令集架构,您需要学习它的指令集和编码方式。您可以在RISC-V官方网站上找到相关的文档和程。 3. 设计处理器的微架构:微架构是处理器的实现细节,包括指令流水线、寄存器文件、ALU等。您需要设计一个合适的微架构来实现RISC-V指令集。 4. 编写Verilog代码:Verilog是一种硬件描述语言,您需要使用Verilog编写处理器的代码。您可以使用Verilog模拟器来验证您的代码是否正确。 5. 进行综合和布局布线:综合是将Verilog代码转换为门级电路的过程,布局布线是将门级电路布置在芯片上的过程。您可以使用EDA工具来完成这些步骤。 6. 进行仿真和验证:最后,您需要对处理器进行仿真和验证,以确保它能够正确地执行RISC-V指令集。 希望这些步骤可以帮助您开始设计自己的RISC-V处理器。祝您好运! ### 回答2: 随着计算机技术的不断发展,处理器作为计算机的中央处理单元,一直处于不断更新和迭代的状态。在这个过程中,越来越多的人开始将目光投向自己动手设计处理器的领域,以提高对计算机结构的理解和掌握能力。而RISC-V处理器则成为了越来越受欢迎的处理器设计体系结构之一。下面,我们就来手把手设计RISC-V处理器。 首先,需要了解RISC-V处理器的体系结构和指令集,掌握其特点,以便更好地进行设计RISC-V架构采用精简指令集(Reduced Instruction Set Computing,RISC)的思想,指令集清晰简单,易于扩展和实现,同时提供了不同的指令长度和地址宽度,满足多种应用场景的需求。 其次,需要明确设计RISC-V处理器的目的和需求。例如,设计一款高性能处理器,需要考虑运算速度、处理带宽、低功耗等方面的需求,而设计一款嵌入式处理器,则需要考虑尺寸、功耗、集成度等方面的需求。在确定需求后,可以选择适合的设计方法和实现方式。 接着,需要进行设计和仿真。采用硬件描述语言(如Verilog或VHDL)进行设计,利用仿真软件进行仿真调试,逐步完善处理器的各项功能。需要注意的是,设计时需要清晰明确每一阶段的功能和相应的接口,保证设计的可扩展性。 最后,进行硬件实现和验证。将设计好的RTL电路转换为FPGA或ASIC中的物理实现,进行性能测试和功能验证,发布仿真测试结果和设计文档,确保设计能够满足预期的性能和功能要求,并能够进一步优化和升级。 在以上步骤中,需要掌握的知识包括计算机体系结构、数字电路设计、硬件描述语言的使用等。需要长期的学习和实践,才能够熟练掌握处理器设计的各个环节,并能够设计出具备高性能、低功耗、灵活可扩展等特点的处理器。 ### 回答3: RISC-V是一个由加州大学伯克利分校推出的开源指令集架构,它的设计理念是简化指令集,更加注重可扩展性、可定制性和易于实现。设计RISC-V处理器需要了解计算机体系结构以及数字电路原理,下面将手把手设计CPU。 第一步,需要确定处理器的架构。RISC-V处理器一般采用五级流水线结构,包括取指、译码、执行、访存和写回。在这个流水线结构中,每个阶段都有对应的功能,可以保证指令的按序执行。 第二步,需要确定指令集架构。RISC-V有基础指令集和标准扩展指令集,需要根据使用需求选择相应的扩展指令集并实现相应的操作。 第三步,需要进行处理器的逻辑设计。包括指令寄存器(IR)、程序计数器(PC)、指令存储器(IM)、寄存器堆、ALU(算数逻辑单元)、数据存储器(DM)等,这些模块通过总线相互连接构成处理器的基本结构。 第四步,需要进行数字电路的设计处理器逻辑的实现需要用到器件和电路,需要根据设计的结构和功能实现相应的数字电路。 第五步,进行验证和调试。在设计完成后,需要进行仿真验证和调试工作,以保证设计的正确性和稳定性。 总的来说,设计RISC-V处理器需要掌握计算机体系结构、数字电路原理和基础编程知识,需要进行详细、全面的规划和设计设计过程中需要不断地验证和调整,确保设计的正确性和稳定性,最终完成一个高质量且符合需求的处理器设计
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学不懂啊阿田

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值