登入帳戶  | 訂單查詢  | 購物車/收銀台(0) | 在線留言板  | 付款方式  | 聯絡我們  | 運費計算  | 幫助中心 |  加入書簽
會員登入   新用戶註冊
HOME新書上架暢銷書架好書推介特價區會員書架精選月讀2024年度TOP分類閱讀雜誌 香港/國際用戶
最新/最熱/最齊全的簡體書網 品種:超過100萬種書,正品正价,放心網購,悭钱省心 送貨:速遞 / 物流,時效:出貨後2-4日

2025年04月出版新書

2025年03月出版新書

2025年02月出版新書

2025年01月出版新書

2024年12月出版新書

2024年11月出版新書

2024年10月出版新書

2024年09月出版新書

2024年08月出版新書

2024年07月出版新書

2024年06月出版新書

2024年05月出版新書

2024年04月出版新書

2024年03月出版新書

『簡體書』处理器架构设计:基于高层次综合的RISC-V实现 [法]伯纳德·古森斯

書城自編碼: 4097112
分類: 簡體書→大陸圖書→計算機/網絡操作系統/系統開發
作者: [法]伯纳德·古森斯
國際書號(ISBN): 9787111772927
出版社: 机械工业出版社
出版日期: 2025-03-01

頁數/字數: /
書度/開本: 16开 釘裝: 平装

售價:NT$ 913

我要買

share:

** 我創建的書架 **
未登入.



新書推薦:
美元霸权的兴衰:它将如何影响全球经济、金融市场和我们的财富(梳理美元发展历程,剖析崛起与衰退的根源)
《 美元霸权的兴衰:它将如何影响全球经济、金融市场和我们的财富(梳理美元发展历程,剖析崛起与衰退的根源) 》

售價:NT$ 296.0
纸上博物馆·文明的崩溃:庞贝+玛雅+美索不达米亚(法国伽利玛原版引进,450+资料图片,16开全彩印刷)
《 纸上博物馆·文明的崩溃:庞贝+玛雅+美索不达米亚(法国伽利玛原版引进,450+资料图片,16开全彩印刷) 》

售價:NT$ 1295.0
郭实猎与“开放中国”——19世纪上半叶的中西碰撞(精)
《 郭实猎与“开放中国”——19世纪上半叶的中西碰撞(精) 》

售價:NT$ 347.0
毕淑敏温暖四部曲 毕淑敏30年散文精华 暖心疗愈 插图典藏(套装4册)
《 毕淑敏温暖四部曲 毕淑敏30年散文精华 暖心疗愈 插图典藏(套装4册) 》

售價:NT$ 1220.0
海外中国研究·中国古代的身份制:良与贱
《 海外中国研究·中国古代的身份制:良与贱 》

售價:NT$ 398.0
国色(《寻色中国》首席色彩顾问郭浩重磅力作,中国传统色丰碑之作《国色》,探寻中国人的色彩世界!)
《 国色(《寻色中国》首席色彩顾问郭浩重磅力作,中国传统色丰碑之作《国色》,探寻中国人的色彩世界!) 》

售價:NT$ 1010.0
图解组织心理学:从零开始养成领导力
《 图解组织心理学:从零开始养成领导力 》

售價:NT$ 347.0
牛津西方哲学史(中文修订版)
《 牛津西方哲学史(中文修订版) 》

售價:NT$ 653.0

編輯推薦:
·对于本科生,本书是实用的计算机体系结构入门书。相对于Patterson和Hennessy等作者的经典书籍,本书更侧重于实践,从普通流水线到多周期、多线程和多核,逐步实现不同的处理器。
·对于教师,本书是一应俱全的实验工具包。书中的所有实现都作为GitHub开源项目向读者开放,并使用定量方法,基于相同的基准测试集来对比不同实现方案的性能。
·对于FPGA工程师,本书是高层次综合(HLS)和RISC-V实战指南。书中介绍了Xilinx Vitis工具包中的HLS环境,逐步解释如何在FPGA上对设计进行实现、仿真和综合。
內容簡介:
本书是一本非常实用的计算机体系结构入门书,所基于的RISC-V指令集架构是一种开源的机器语言,有望成为主流的设计语言。本书旨在指导读者动手设计RISC-V处理器,实现不同的处理器组织,如普通流水线、多周期操作流水线、多线程、多核等。在每一步的实现环节,都给出开源的C++ HLS代码,可以在基于FPGA的开发板上进行集成和测试。本书从设计的角度介绍计算机体系结构,既涵盖足够的理论知识,又提供丰富的实验资源,既可作为面向本科生的计算机体系结构入门教程,又可作为面向FPGA工程师的高层次综合和RISC-V的实战指南。
關於作者:
伯纳德·古森斯(Bernard Goossens)
法国佩皮尼昂大学理学院教授,研究领域包括处理器微架构、计算机系统等。著有Architecture et micro-architecture des processeurs(Springer,2002)(法语)。
目錄
译者序
前 言
致 谢
第一部分 单核处理器
第1章 FPGA及高层次综合概述2
1.1 FPGA中可放置的硬件2
1.2 查找表:一种存储真值表的硬件3
1.3 组合LUT4
1.4 FPGA的结构6
1.5 FPGA编程7
参考文献8
第2章 Vitis_HLS、Vivado和Vitis
     IDE工具的设置和使用9
2.1 获取硬件9
2.2 获取软件:Xilinx Vitis工具10
2.3 在Vitis软件中安装开发板的定义11
2.4 安装图书资源12
2.5 使用软件12
2.5.1 创建项目12
2.5.2 创建IP16
2.5.3 仿真IP20
2.5.4 综合IP24
2.6 使用Vivado创建设计32
2.7 加载IP并使用Vitis运行FPGA50
参考文献61
第3章 RISC-V工具的安装和使用62
3.1 安装RISC-V工具链和模拟
   器/调试器62
3.1.1 安装RISC-V工具链62
3.1.2 spike模拟器64
3.1.3 为基于RISC-V FPGA的处理
   器构建可执行代码67
3.2 使用GDB进行调试68
3.2.1 安装GDB69
3.2.2 安装OpenOCD69
3.2.3 定义与spike模拟器兼容的
    链接器描述文件69
3.2.4 使用链接器描述文件进行
   编译70
3.2.5 为OpenOCD定义spike配置
   文件70
3.2.6 连接spike、OpenOCD和GDB70
3.2.7 调试过程71
3.3 使用GDB调试复杂代码73
第4章 RISC-V体系结构77
4.1 RISC-V指令集体系结构77
4.1.1 RV32I寄存器和RISC-V
   应用程序二进制接口77
4.1.2 RV32I指令79
4.1.3 RV32I指令格式80
4.1.4 汇编语法84
4.2 代码示例86
4.2.1 表达式86
4.2.2 测试87
4.2.3 循环89
4.2.4 函数调用89
参考文献91
第5章 构建具有“取指”“译码”
        和“执行”功能的处理器92
5.1 HLS编程的一般概念92
5.1.1 关键路径92
5.1.2 使用更多的计算来减少关键
   路径93
5.1.3 并行执行93
5.2 基本的处理器执行时间公式94
5.3 第一步:构建更新pc的通路95
5.3.1 fetching_ip设计95
5.3.2 fetching_ip顶层函数96
5.3.3 fetch函数99
5.3.4 execute函数101
5.3.5 IP运行条件101
5.3.6 使用测试平台进行IP仿真102
5.3.7 仿真输出102
5.3.8 fetching_ip综合103
5.3.9 z1_fetching_ip Vivado项目105
5.3.10 在FPGA上驱动fetching_ip
      的helloworld.c程序106
5.4 第二步:添加一点译码操作来
  计算下一个pc107
5.4.1 RISC-V指令编码107
5.4.2 fetching_decoding_ip110
5.4.3 fetching_decoding_ip.h文件112
5.4.4 fetch函数和running_cond_
   update函数114
5.4.5 decode函数114
5.4.6 指令执行(计算下一个pc)116
5.4.7 使用测试平台模拟
   fetching_decoding_ip118
5.4.8 fetching_decoding_ip的综合119
5.4.9 z1_fetching_decoding_ip
   Vivado项目119
5.4.10 驱动fetching_decoding_ip
     的helloworld.c代码121
5.5 第三步:填充执行级来构建
  寄存器通路121
5.5.1 取指、译码和执行IP:
   fde_ip设计121
5.5.2 两种调试工具:寄存器文件
   转存和代码反汇编123
5.5.3 IP的运行条件124
5.5.4 fde_ip.h文件124
5.5.5 译码函数和执行函数126
5.5.6 寄存器文件127
5.5.7 计算128
5.5.8 使用测试平台模拟fde_ip132
5.5.9 fde_ip综合138
5.5.10 z1_fde_ip Vivado项目138
5.5.11 使用helloworld.c程序
    驱动FPGA中的fde_ip139
参考文献140
第6章 构建RISC-V处理器141
6.1 rv32i_npp_ip顶层函数141
6.1.1 rv32i_npp_ip顶层函数原型、
   局部声明和初始化141
6.1.2 do…while循环142
6.2 译码更新143
6.3 数据存储器访问:对齐和大小端143
6.4 execute函数144
6.4.1 访存地址的计算144
6.4.2 compute_result函数145
6.4.3 mem_store函数146
6.4.4 mem_load函数147
6.4.5 write_reg函数148
6.5 用测试平台模拟rv32i_npp_ip149
6.6 rv32i_npp_ip的综合153
6.7 z1_rv32i_npp_ip Vivado项目154
6.8 在FPGA上驱动rv32i_npp_ip
   的helloworld.c程序154
第7章 测试RISC-V处理器156
7.1 用本书的测试程序测试
   rv32i_npp_ip处理器156
7.2 使用官方riscv-tests进行更多测试156
7.2.1 用spike运行riscv-tests156
7.2.2 riscv-tests结构157
7.2.3 使riscv-tests结构适配
   Vitis_HLS环境160
7.2.4 添加_start.S程序将所有
   测试合并161
7.2.5 在Vitis_HLS中仿真测试
   的testbench162
7.2.6 在Vitis_HLS环境中运行
   riscv-tests163
7.2.7 在FPGA上测试167
7.3 在rv32i_npp_ip处理器上运行
  基准测试集168
7.3.1 mibench测试集中的
   basicmath_small基准
   测试169
7.3.2 在FPGA上运行basicmath_
   small基准测试174
7.3.3 mibench测试集的其他
   基准测试176
7.3.4 mibench和riscv-tests基准
   在rv32i_npp_ip实现上的
   执行时间176
7.4 建议练习:RISC-V的M和F
   指令扩展177
7.4.1 使rv32i_npp_ip设计适应
   RISC-V的M扩展177
7.4.2 使rv32i_npp_ip设计适应
   RISC-V的F扩展178
7.5 调试提示179
7.5.1 综合不是仿真:可以禁用
   仿真的某些部分179
7.5.2 无限仿真:用for循环替换
   do…while循环179
7.5.3 Frozen IP On FPGA:检查
   ap_int和ap_uint变量179
7.5.4 Frozen IP On FPGA:检查
   #ifndef__SYNTHESIS__
   内部的计算180
7.5.5 Frozen IP On FPGA:用
   for循环代替“while
    (!IsDone(...)); ”循环180
7.5.6 Frozen IP On FPGA:减少
   RISC-V代码的运行180
7.5.7 FPGA上的非确定性行为:
   检查初始化180
7.5.8 在FPGA上运行时的调试
   输出180
参考文献180
第8章 构建流水线RISC-V处理器181
8.1 第一步:流水线控制181
8.1.1 非流水线微架构与流水线
   微架构的区别181
8.1.2 流水级之间的连接结构182
8.1.3 IP顶层函数183
8.1.4 流水线中的控制流指令
   处理185
8.1.5 fetch_decode流水级186
8.1.6 execute_wb流水级186
8.1.7 IP的仿真与综合188
8.1.8 使用IP的Vivado项目189
8.1.9 在开发板上运行Vivado
   项目190
8.1.10 simple_pipeline_ip的进
   一步测试191
8.1.11 非流水线设计与流水线
    设计的比较191
8.2 第二步:将流水线分成多个
  流水级192
8.2.1 四级流水线192
8.2.2 流水级之间的连接192
8.2.3 fetch_decode流水级的
   decode部分194
8.2.4 IP的顶层函数194
8.2.5 执行阶段的旁路机制195
8.2.6 执行阶段197
8.2.7 内存载入冒险201
8.2.8 访存阶段202
8.2.9 写回阶段202
8.2.10 testbench函数203
8.2.11 IP综合204
8.2.12 Vivado项目204
8.2.13 Vivado项目在开发板上
    的执行情况205
8.2.14 rv32i_pp_ip的进一步测试206
8.3 比较二级流水线与四级流水线206
第9章 构建多周期流水线RISC-V
    处理器208
9.1 流水线与多周期流水线的区别208
9.1.1 冻结流水级的等待信号208
9.1.2 有效的输入位和输出位209
9.1.3 取指并计算下一个pc209
9.1.4 多周期流水级的安全结构210
9.1.5 多个多周期流水级210
9.2 IP的顶层函数211
9.3 流水级213
9.3.1 取指阶段213
9.3.2 译码阶段215
9.3.3 发射阶段217
9.3.4 执行阶段222
9.3.5 访存阶段226
9.3.6 写回阶段227
9.4 仿真、综合与运行IP228
9.4.1 IP仿真与综合228
9.4.2 Vivado项目及实现报告229
9.4.3 在开发板上运行IP230
9.4.4 multicycle_pipeline_ip的
   进一步测试231
9.5 比较多周期流水线与四级流水线231
9.6 建议练习:将II减少到1233
参考文献234
第10章 使用多hart流水线构建
      RISC-V处理器235
10.1 使用多hart处理器同时处理
   多个线程235
10.2 多hart内存模型236
10.3 multihart流水线238
10.3.1 hart的数量239
10.3.2 multihart的流水级状态240
10.3.3 占用信息数组243
10.3.4 multihart_ip的顶层函数243
10.3.5 将_to_结构复制到_from_
    结构的new_cycle函数249
10.3.6 multihart取指阶段250
10.3.7 译码阶段252
10.3.8 发射阶段253
10.3.9 执行阶段256
10.3.10 访存阶段257
10.3.11 写回阶段260
10.3.12 lock_unlock_update函数262
10.3.13 run_cond_update函数262
10.4 模拟multihart_ip263
10.4.1 用不相关的代码填充hart263
10.4.2 用并行化代码填充hart265
10.5 综合IP269
10.6 Vivado项目和实施报告269
10.7 在开发板上运行multihart_ip271
10.7.1 运行独立代码271
10.7.2 运行并行应用程序272
10.7.3 multihart_ip的进一步测试273
10.8 比较multihart_ip与四级流
   水线274
10.8.1 两个hart274
10.8.2 四个hart275
10.8.3 八个hart276
参考文献276
第二部分 多核处理器
第11章 连接IP278
11.1 AXI interconnect系统278
11.2 使用外部存储器IP的非流水
   RISC-V处理器279
11.2.1 具有BRAM接口的顶层
    函数279
11.2.2 IP的综合280
11.2.3 Vivado项目280
11.2.4 在开发板上运行IP284
11.3 通过AXI interconnect连接
    多个CPU和多块RAM285
11.3.1 多IP设计285
11.3.2 CPU的顶层函数286
11.3.3 CPU头文件和testbench
    代码287
11.4 多IP设计的仿真、综合和运行288
11.4.1 仿真288
11.4.2 综合289
11.4.3 Vivado项目289
11.4.4 运行多IP设计294
第12章 多核RISC-V处理器296
12.1 multicycle_pipeline_ip到多核
   的适配296
12.1.1 向顶层函数原型添加IP的编号297
12.1.2 IP顶层函数声明298
12.1.3 IP顶层函数初始化298
12.1.4 IP顶层函数主循环299
12.1.5 寄存器文件初始化299
12.1.6 访存300
12.2 仿真IP303
12.2.1 在不同的IP上仿真独立的
    程序303
12.2.2 仿真并行的程序305
12.3 综合IP309
12.4 Vivado项目309
12.5 在开发板上运行IP311
12.5.1 运行独立的程序311
12.5.2 运行并行的程序312
12.6 评估多核IP的并行效率314
参考文献315
第13章 基于multihart核的多核
     RISC-V处理器316
13.1 从multihart_ip到多核316
13.1.1 multihart IP多核的顶层
   函数原型和局部声明316
13.1.2 数据存储器的访问319
13.2 仿真IP322
13.2.1 仿真独立的程序322
13.2.2 仿真并行的程序325
13.2.3 综合IP328
13.2.4 Vivado项目328
13.3 在开发板上运行IP329
13.3.1 运行独立的程序329
13.3.2 运行并行的程序331
13.4 评估多核multihart IP的并行
   效率333
第14章 使用Pynq-Z1/Z2开发
      板上的LED和按钮进行
     探索335
14.1 访问开发板上的按钮和LED
  的Zynq设计335
14.2 通过RISC-V处理器访问按钮
  和LED的设计336
14.3 结论339
缩略词340
內容試閱
前 言
处理器体系结构:DIY方式
本书是关于处理器体系结构的又一本新书。尽管本书介绍了多核和多线程设计,但这些新内容并非本书的主题,本书旨在介绍处理器体系结构的设计。
本书借鉴了Douglas Comer所著的知名操作系统教材[1-2]。与Douglas Comer介绍操作系统设计的方式类似,本书使用DIY方式来介绍处理器设计。
Douglas Comer的书使用C源代码从头构建了一个完整的操作系统。本书的目标是让读者也使用C源代码从头开始构建自己的处理器。
读者只需一台计算机、一块开发板(可选)和一套能够将C语言程序转换成等效FPGA(现场可编程门阵列)实现的免费软件。
如果读者没有开发板,仍然可以仿真本书中介绍的处理器。
20世纪70年代,一个人就可以构建一个完整的操作系统(如Kenneth L. Thompson在1970年构建了UNIX),更有意义的事情是可以写一本指导书,介绍实现类似UNIX操作系统的完整步骤(Douglas Comer在1984年出版了这样一本书[1])。
计算机硬件和软件的两项改进——个人计算机和C编程语言的普及,可提供对硬件的完整访问。
如今,FPGA扮演着70年代个人计算机的角色:它提供了对逻辑门的访问。高层次综合(High-Level Synthesis,HLS)工具扮演了70年代C语言编译器的角色:通过高级语言提供对FPGA的访问。

RISC-V开源处理器设计
Douglas Comer的书使用自制示例Xinu解释了如何构建操作系统。尽管声称Xinu不是UNIX(Xinu是“Xinu Is Not Unix”首字母的缩写),但由于它的特点,读者和实现者有机会将自己的实现与参考的UNIX进行比较。
出于同样的想法,本书选择了一个参考处理器,以便能够将书中提出的基于FPGA的处理器与实际的RISC-V工业产品进行比较。
RISC-V是一个开源的指令集体系结构(Instruction Set Architecture,ISA),这意味着读者可以在不需要授权的情况下构建、使用甚至出售RISC-V处理器。Intel的x86或ARM的v7/v8则不然。
此外,RISC-V定义了多个级别的ISA子集。一个处理器可以实现任何级别的ISA。
在本书中,读者将实现一个最基本的子集,即RV32I(一组用于计算32位整数的机器指令)。但是根据RISC-V规范[3],读者将了解更多的知识,能够将处理器扩展到64位字,并增加浮点计算子集等。
此外,读者将要实现的子集足以启动像Linux这样的操作系统(虽然这不是本书的一部分)。

面向本科生的实用的计算机体系结构入门书
本书是一本非常实用的计算机体系结构入门书。可以将它视作对该领域更完整的参考书(例如,J. L. Hennessy和D. A. Patterson所著的近期新版本的计算机体系结构书籍[4-5])的应用。
沿着章节顺序,读者将实现不同的处理器组织:
基础处理器(如Intel 4004,它是1971年推出的第一款微处理器,即第一款集成在集成电路芯片中的处理器)[6, 7]。
轻量级流水线处理器[如RISC-I,RISC-I处理器是第一个引入RISC概念的流水线微处理器。RISC(Reduced Instruction Set Computer,精简指令集计算机)的概念于1980年提出][8]。
普通流水线处理器[如MIPS,MIPS(Microprocessor without Interlocked Pipeline Stages)在RISC-I的基础上,添加了更好的流水线填充技术][9]。
多周期操作流水线(又称多周期流水线),对流水线进行了增强,以处理多周期内存访问、整数乘除或除法,以及浮点运算等)。
多线程[如SMT(同时多线程),是在多个线程之间共享流水线的一种增强功能,因此可以更好地填充流水线。Intel将这种技术命名为超线程][10]。
多核(如IBM Power-4,这是2001年推出的第一款多核处理器,其内部有两个核)[11]。
即使读者因为没有开发板而停留在仿真级别,这些设计也已经在FPGA上进行了测试,并且满足硬件约束。

面向教师的GitHub支持的教学工具
本书中设计的所有处理器(无论是仅用于仿真的版本还是能够在Xilinx开发板上进行测试的基于FPGA的完整项目)都作为开源项目提供,可在https://github.com/goossens-springer 的goossens-book-ip-projects库中找到。
本书有一整章专门介绍RISC-V工具的安装(GNU工具链,包括RISC-V交叉编译器、spike仿真器、GDB调试器),以及由RISC-V国际组织(https://riscv.org/)提供的RISCV-tests官方测试和基准测试集。
书中使用有名的Hennessy-Patterson“定量方法”[4]对提出的实现方案的性能进行了对比。本书介绍了如何将一个基准测试集移植到开发板的无操作系统环境中。
整本书都使用相同的基准测试集来对比系列设计的性能。这些对比突出了处理器性能公式中的CPI(Cycles Per Instruction,指令执行所需的时钟周期数)。
对学生来说,相比于没有实际硬件约束的仿真评估,这种基于实际软核实现的评估对比更具说服力。
书中介绍了与流水线相关的不同微架构:延迟分支和分支取消、数据旁路(前递)、延迟加载、多周期运算,以及非常普遍的流水级填充。
第4章介绍了汇编语言编程。使用的RISC-V代码是从对C程序(表达式、测试、循环和函数)的编译和分析中获得的。
书中给出了一些可以作为学期项目的练习题,例如,将给定的实现扩展到RISC-V M或RISC-F ISA子集。

实验

 

 

書城介紹  | 合作申請 | 索要書目  | 新手入門 | 聯絡方式  | 幫助中心 | 找書說明  | 送貨方式 | 付款方式 台灣用户 | 香港/海外用户
megBook.com.tw
Copyright (C) 2013 - 2025 (香港)大書城有限公司 All Rights Reserved.