该版本电子书比较难找,需要电子书的关注我后私信邮箱即可领取
博主出于兴趣打算自己实现一个RISC-V的CPU,因为博主的研究方向只是和FPGA有交叉,投入到FPGA方面的时间有限,投入到实现CPU的时间会更少,所以实现的整个过程一定是比较漫长的,但尽量坚持到最后。
本系列学习笔记只作为自己总结后方便复看,可能不会摘录所有重点!
前言
RISC-V:RISC-V是一个开放的指令系统,是由加州大学伯克利分校开发的,不仅消除了MIPS指令系统的弊病,而且还具备指令系统应有的简洁、优雅和现代的特点,提供了一套开源的模拟器、编译器、调试器等,甚至还提供开源的使用硬件描述语言编写的RISC-V处理器实现。
读完这本书你可以回答的问题!
1:用C或Java等高级语言编写的程序如何被翻译成机器语言,以及硬件如何执行最终的程序?
2:软件和硬件之间的接口是什么?软件如何指导硬件执行所需的功能?这些概念对于理解如何编写软件是至关重要的。
3:什么因素决定了程序的性能,以及程序员如何改进程序性能?我们将从本书知道,这取决于原始程序、将该程序转换成计算机语言的软件以及硬件执行该程序的有效性。硬件设计人员可以使用哪些技术来提高性能?本书将介绍现代计算机设计的基本概念。感兴趣的读者可以在我们的进阶教材《计算机体系结构:量化研究方法》中找到更多关于此主题的内容。
4:硬件设计人员可以使用哪些技术来改善能效?程序员可以做些什么来改变能效?串行处理近来发展到并行处理的原因和结果是什么?本书给出了这一发展变化的冬季,描述了当前支持并行的硬件机制,并评述了新一代“多核”微处理器
5:自1951年第一台商用计算机以来,计算机架构师提出的哪些伟大思想奠定了现代计算技术的基础?
第1章 计算机抽象及相关技术
计算机的主要三种应用场景:
- 个人计算机。
- 服务器:适用于执行巨大的工作负载,也可以执行许多小型作业例如在构建大型Web服务器时发生的任务。
- 嵌入式计算机:是计算机中最大的一个类别,其应用场景和性能范围也最为广泛,包括汽车、电器中的微处理器或计算机,以及控制飞机的处理器网络。其设计目标是运行单一应用程序或者一组相关的应用程序。嵌入式应用常常具有特定的应用程序要求,这需要将最低性能与严格的成本及功耗限制结合在–起考虑。
云计算
通过互联网提供服务的大规模服务器集群、一些服务提供商动态地将不同数量的服务器作为像水、电一样的公用资源进行租用;云计算接替了传统服务器,它依赖于现在称为仓储级计算机( Warehouse Scale Computer, wSC)的巨型数据中心。当今的软件开发人员经常会将应用的一部分运行在个人移动设备上,另一部分则部署在云上。
软件即服务
通过互联网以服务的方式提供软件和数据,通常是通过一个小型客户端程序(例如运行在本地客户端设备上的浏览器)连接网络以运行程序或获取数据,而不是必须完全在本地设备上安装和运行所有二进制代码具体的例子包括Web搜索和社交网络。
计算机体系结构中的8个伟大思想:
- 面向摩尔定律的设计:计算机设计者面临的一个永恒的问题就是摩尔定律(Moore’s law)驱动的快速变化。摩尔定律指出单芯片上所集成的晶体管资源每18至24个月翻一番。摩尔定律是Intel公司的创始人之一戈登·摩尔在1965年对集成电路容量做出的预测。由于计算机设计需要花费数年时间,因此在项目结束时,每个芯片的可用晶体管资源相对设计开始时可以轻易实现双倍或四倍增长。计算机架构师必须预测其设计完成时的工艺水平,而不是设计开始时的工艺水平。
- 使用抽象简化设计:必须发明新技术来提高自己的工作效率,否则设计时间会随着资源的增长而显著延长,抽象简化设计即隐藏低层细节以提供给高层一个更简单的模型。
- 加速经常性事件:比优化罕见情形能更好地提升性能,这意味着设计者需要知道经常性事件是什么,通过仔细的实验和测量才可能得出。
- 通过并行提高性能
- 通过流水线提高性能
- 通过预测提高性能:在某些情况下,假设从预测错误中恢复的代价并不高,且预测相对准确,则平均来说进行预测并开始工作可能会比等到明确结果后再执行更快。
- 存储层次:存储器的速度会影响性能,存储器的容量限制了可以被解决的问题的规模,因此程序员希望存储器的速度更快、容量更大。我们可以通过存储层次来处理这些冲突。在存储层次中,速度最快、容量最小并且每位价格最昂贵的存储器处于顶层,而速度最慢、容量最大且每位价格最便宜的存储器处于底层。
- 通过冗余提高可靠性:该组件在系统发生故障时可以替代失效组件并帮助检测故障。
程序表象之下
从复杂的应用程序到原始的指令涉及若干软件层次来将高层次操作解释或翻译成简单的计算机指令,这可以作为伟大的抽象思想的一个例子。层次结构可以由下图表示:
系统软件有很多种,其中有两种是必须的:操作系统和编译器。
操作系统
为了使程序更好地在计算机上运行而管理计算机资源的监控程序。
操作系统:是用户程序和硬件之间的接口,为用户提供各种服务和监控功能其最为重要的作用是:
- 处理基本的输入和输出操作
- 分配外存和内存
- 为多个应用程序提供共享计算机资源的服务
常用的操作系统有Linux、IOS和Windows
编译器
将高级语言翻译为计算机所能识别的机器语言的程序。
编译器完成另外一项重要功能:把高级语言(如C、C++、Java等)编写的程序翻译成硬件能执行的指令。在第2章会详细介绍。
从高级语言到硬件语言
硬件语言即二进制表示,计算机服从于我们的命令,即计算机术语中的指令(instruction)。例如位串
1001010100101110 告诉计算机将两个数相加。(第2章将解释为什么数字既表示指令又表示数据)
汇编器:将指令由助记符(汇编语言)形式翻译成二进制形式(机器语言)的程序。
编译器将高级语言表达式编译为汇编语言,然后汇编器将此语句翻译为二进制指令告诉计算机。
计算机的组成
计算机是由输入、输出、处理和存储数据任务的5个部件构成的具体有
- 输入
- 输出
- 存储器
- 数据通路(在计算机中也成为运算器)
- 控制器
其中4和5合成为处理器
。计算机的两个关键部件是输入设备和输出设备。