热门搜索: 中考 高考 考试 开卷17
服务电话 024-96192/23945006
 

大话计算机——计算机系统底层架构原理极限剖析

编号:
wx1202447526
销售价:
¥614.24
(市场价: ¥698.00)
赠送积分:
614
商品介绍

计算机,已经无处不在,你走到任何位置,都会有成千上万各种类型的“计算机”围绕着你,小到各种移动设备,大到飞机火车,都是由各种计算机控制并运转。你可曾想过这些计算机是怎么运作的?一个字节是怎么产生又是怎么消亡的?网络是如何连接一切的?人工智能到底是什么?……
冬瓜哥其人,喜钻研,擅用与科班教材截然不同的方式把计算机原理细细分解,娓娓道来。这本书如此通俗,以至于假设当代文明毁灭之后,下一个文明从地壳中找到这本书,按照书中所讲即可迅速建立起计算机体系,极大推动下一个文明的进程……

现代计算机系统的软硬件架构十分复杂,是所有IT相关技术的根源。本书尝试从原始的零认知状态开始,逐 步从很基础的数字电路一直介绍到计算机操作系统以及人工智能。本书用通俗的语言、恰到好处的疑问、符合原生 态认知思维的切入点,来帮助读者洞悉整个计算机底层世界。本书在写作上遵循“先介绍原因,后思考,然后介绍 解决方案,很终提炼抽象成概念”的原则。全书脉络清晰,带领读者重走作者的认知之路。本书集科普、专业为一 体,用通俗详尽的语言、图表、模型来描述专业知识。 本书内容涵盖以下学科领域:计算机体系结构、计算机组成原理、计算机操作系统原理、计算机图形学、高性 能计算机集群、计算加速、计算机存储系统、计算机网络、机器学习等。 本书共分为12章。章介绍数字计算机的设计思路,制作一个按键计算器,在这个过程中逐步理解数字计 算机底层原理。第2章在章的基础上,改造按键计算器,实现能够按照编好的程序自动计算,并介绍对应的处 理器内部架构概念。第3章介绍电子计算机的发展史,包括芯片制造等内容。第4章介绍流水线相关知识,包括流 水线、分支预测、乱序执行、超标量等内容。第5章介绍计算机程序架构,理解单个、多个程序如何在处理器上编 译、链接并很终运行的过程。第6章介绍缓存以及多处理器并行执行系统的体系结构,包括互联架构、缓存一致性 架构的原理和实现。第7章介绍计算机I/O基本原理,包括PCIE、USB、SAS三大I/O体系。第8章介绍计算机 是如何处理声音和图像的,包括3D渲染和图形加速原理架构和实现。第9章介绍大规模并行计算、不错计算机原 理和架构,以及可编程逻辑器件(如FPGA等)的原理和架构。0章介绍现代计算机操作系统基本原理和架构, 包括内存管理、任务调度、中断管理、时间管理等架构原理。1章介绍现代计算机形态和生态体系,包括计算、 网络、存储方面的实际计算机产品和生态。2章介绍机器学习和人工智能底层原理和架构实现。 本书适合所有IT行业从业者阅读,包括计算机(PC/服务器/手机/嵌入式)软硬件及云计算/大数据/人工 智能等领域的研发、架构师、项目经理、产品经理、销售、售前。本书也同样适合广大高中生科普之用,另外计算 机相关专业本科生、硕士生、博士生同样可以从本书中获取与课程教材截然不同的丰富营养。

冬瓜哥(张冬),现任某半导体公司系统架构师,喜钻研,著有《大话存储》系列图书。

开篇?苦想计算机——以使用者的名义
章?电控开关——计算机世界的基石
1.1  十余年的迷惑 4
1.2  从1+1=2说起 4
1.2.1  用电路实现1+1=2 6
1.2.2  或门 6
1.2.3  与门 7
1.2.4  非门和与非门 7
1.2.5  异或门 7
1.2.6  1位加法器 8
1.2.7  全手动1位加法机 10
1.2.8  实现多位加法器 10
1.2.9  电路的时延 13
1.2.10  新世界的新规律 13
1.2.11  先行/并行进位 14
1.2.12  电路化简和变换 15
1.3  我们需要真正可用的计算器 16
1.3.1  产生记忆 17
1.3.2  解决按键问题 18
1.3.3  数学的懵懂 22
1.3.4  次理解数学 25
1.3.5  次理解语义 27
1.3.6  七段显示数码管 30
1.3.7  野路子乘法器 31
1.3.8  科班乘法器 35
1.3.9  数据交换器Crossbar 36
1.3.10  多媒体声光按键转码器 39
1.3.11  次驾驭时间 41
1.4  信息与信号 44
1.4.1  录制和回放 44
1.4.2  振动和信号 49
1.4.3  低通滤波 52
1.4.4  高通滤波 56
1.4.5  带通滤波 59
1.4.6  带阻滤波 59
1.4.7  傅里叶变换 59
1.4.8  波动与电磁波 60
1.4.9  载波、调制与频分复用 62
1.5  完整的计算器 68
1.5.1  用时序控制增强用户体验 69
1.5.2  用MUX来实现Crossbar 71
1.5.3  奇妙的FIFO队列 73
1.5.4  同步/异步FIFO 76
1.5.5  全局共享FIFO 77
1.5.6  多路仲裁 78
1.5.7  交换矩阵 79
1.5.8  时序问题的产生与触发器 84
1.5.9  擒纵机构与触发器 86
1.5.10  擒纵机构与晶振 87
1.5.11  Serdes与MUX/DEMUX 90
1.5.12  计算离不开数据传递 90
1.5.13  几个专业概念的由来 91
1.5.13.1?输入设备 91
1.5.13.2?输出设备 91
1.5.13.3?计算单元/运算器 91
1.5.13.4?控制单元和传递通路 91
1.5.13.5?反馈 91
1.5.13.6?运算/计算 94
1.5.13.7?数据通路和控制通路 94
1.5.13.8?组合逻辑和时序逻辑 94
1.5.13.9?寄存器/ Latch/触发器/锁存器 94
1.5.13.10?存储器 94
1.5.13.11?地址/指针 95
1.5.13.12?写使能信号 95
1.6  多功能计算器 95
算术逻辑单元 96
第2章?解脱人手——程序控制计算机
2.1  从累积计算说起 98
2.2  自动执行 101
2.2.1  将操作方式的描述转化为指令 102
2.2.2  实现那只鱿鱼——控制通路及部件 104
2.2.3  动起来吧!——时序通路及部件 108
2.2.4  半自动执行!——你得推着它跑 112
2.2.5  全自动受控执行!——不用扬鞭自奋蹄! 113
2.2.6  NOOP指令 115
2.2.7  利用边沿型触发器搭建电路 116
2.2.8  分步图解指令的执行过程 121
2.2.9  判断和跳转 123
2.2.10  再见,章鱼先生! 126
2.3  更高效的执行程序 128
2.3.1  利用循环缩减程序尺寸 128
2.3.2  实现更多方便的指令 131
2.3.3  多时钟周期指令 133
2.3.4  微指令和微码 136
2.3.5  全局地址空间 138
2.3.6  多端口存储器 138
2.3.7  多级缓存与CPU 139
2.3.8  数据遍布各处 142
2.3.9  降低数据操作粒度 145
2.3.10  取指令/数据缓冲加速 147
第3章?开关的进化——从机械到芯片
3.1  从薄铁片到机械计算机 150
3.1.1  算盘和计算尺 150
3.1.2  不可编程手动机械十进制计算机 151
3.1.3  可编程自动机械十进制计算机 152
3.1.4  可编程自动电动机械二进制计算机 156
3.1.5  可编程自动全电动二进制计算机 162
3.2  电子管时代 166
3.2.1  二极电子管 166
3.2.2  三极电子管 170
3.2.3  AM广播革命 172
3.2.4  电子管计算机 174
3.2.5  石头会唱歌 177
3.3  固态革命——晶体管 179
3.3.1  P/N结与晶体管 181
3.3.2  场效应管(FET) 183
3.3.3  MOSFET 185
3.3.4  cMOS 186
3.3.5  晶体管计算机 187
3.4  制造工艺革命——集成电路 190
3.4.1  量产晶体管 190
3.4.2  跟冬瓜哥学做P/N结蛋糕 192
3.4.3  提升集成度 196
3.4.4  芯片内的深邃世界 197
3.4.5  cMOS集成电路工艺概述 200
3.4.6  cMOS工艺步骤概述 203
3.4.7  cMOS工艺详细步骤 206
3.4.7.1  热氧化 207
3.4.7.2  氮化硅积淀 207
3.4.7.3  浅槽隔离蚀刻 208
3.4.7.4  pMOS和nMOS生成 209
3.4.7.5  触点电极的生成 213
3.4.7.6  通孔和支撑柱(via)的生成 214
3.4.7.7  层导线连接 216
3.4.7.8  第二层导线连接 216
3.4.7.9  表面钝化 217
3.4.8  半导体工艺的瓶颈 220
3.4.8.1  寄生电容 220
3.4.8.2  静态/动态功耗 221
3.4.8.3  栅氧厚度和High-K材料 222
3.4.8.4  导线连接和Low-K材料 222
3.4.8.5  驱动能力及时延 222
3.4.8.6  时钟树 224
3.4.9  集成电路计算机 224
3.4.10  微处理器计算机 227
3.4.11  暴力拆解奔三CPU 230
3.5  存储器:不得不说的故事 232
3.5.1  机械存储器 233
3.5.1.1  声波/扭力波延迟线(Delay Line) 233
3.5.1.2  磁鼓存储器(Drum) 234
3.5.1.3  磁芯存储器(Core) 235
3.5.2  电子存储器 238
3.5.2.1  静态随机存储器(SRAM) 238
3.5.2.2  动态随机存储器(DRAM) 241
3.5.2.3  Flash闪存 246
3.5.2.4  只读存储器(ROM) 248
3.5.3  光存储器 248
3.5.3.1  光盘是如何存储数据的 248
3.5.3.2  压盘与刻盘的区别 250
3.5.3.3  光盘表面微观结构 250
3.5.3.4  多层记录 251
3.5.3.5  激光头的秘密 251
3.5.3.6  蓝光光盘简介 252
3.5.4  不同器件担任不同角色 253
3.5.4.1  寄存器和缓存 253
3.5.4.2  主运行内存/主存 253
3.5.4.3  Scratchpad RAM 254
3.5.4.4  内容寻址内存CAM/TCAM 254
3.5.4.5  外存 257
第4章?电路执行过程的进化——流水线、分支预测、乱序执行与多发射
4.1  大话流水线 260
4.1.1  不高兴的译码器 260
4.1.2  思索流水线 263
4.1.2.1  流水线的本质是并发 263
4.1.2.2?不同时延的步骤混杂 264
4.1.2.3  大话队列 266
4.1.2.4?流水线的应用及优化 268
4.2  优化流水线 270
4.2.1  拆分慢速步骤 270
4.2.2  放置多份慢速部分 272
4.2.3  加入缓冲队列 273
4.2.4  图解五级流水线指令执行过程 273
4.3  流水线冒险 273
4.3.1  访问冲突与流水线阻塞 278
4.3.2  数据依赖与数据前递 281
4.3.3  跳转冒险与分支预测 285
4.4  指令的动态调度 293
4.4.1  结构相关与寄存器重命名 293
4.4.2  保留站与乱序执行 295
4.4.3  分步图解乱序执行 297
4.4.4  重排序缓冲与指令顺序提交 319
4.5  物理并行执行 320
4.5.1  超标量和多发射 320
4.5.2  VLIW超长指令字 322
4.5.3  SIMD单指令多数据 322
4.6  小结 326
第5章?程序世界——从机器码到操作系统
5.1  基本的数据结构 330
5.1.1?数组 330
5.1.2  数据类型与ASCII码 331
5.1.3  结构体 333
5.1.4  数据怎么摆放很重要 333
5.2  不错语言 335
5.2.1  简单的声明和赋值 335
5.2.2  编译和编译器 336
5.2.3  向编译器描述数据的编排方式 337
5.2.4  不错语言编程小试牛刀 339
5.2.5  人脑编译忆苦思甜 341
5.3  浮点数及浮点运算 342
5.3.1  数值范围和精度 342
5.3.2  浮点数的用处和表示方法 343
5.3.3  浮点数的二进制表示 344
5.3.3.1?二进制浮点数转十进制小数 344
5.3.3.2?十进制小数转二进制浮点数 345
5.3.3.3?负指数和0的表示 346
5.3.3.4?无穷与非规格化数的表示 346
5.3.4  浮点数运算挺费劲 347
5.3.5  浮点数的C语言声明 349
5.3.6  十六进制表示法 349
5.4  程控多媒体计算机 350
5.4.1  键盘是前提 350
5.4.2  搜索并显示 351
5.4.3  实现简易计算器 354
5.4.4  录入和保存 355
5.4.5  简易文件系统 356
5.4.6  计时/定时 360
5.4.7  发声控制 367
5.4.8  图像显示 369
5.4.9  网络聊天 372
5.5  程序社会 376
5.5.1  函数和调用 377
5.5.2  设备驱动程序 381
5.5.3  函数之间的联络站 388
5.5.4  库和链接 397
5.5.4.1?静态库和静态链接 399
5.5.4.2?头文件 404
5.5.4.3?API和SDK 406
5.5.4.4?动态库和动态链接 409
5.5.4.5?库文件/可执行文件的格式 410
5.5.5  程序的执行和退出 412
5.5.5.1?初步解决地址问题 413
5.5.5.2?更好的人机交互方式 413
5.5.5.3?程序的退出 414
5.5.5.4?使用外部设备和内存 416
5.5.6  多程序并发执行 417
5.5.6.1?利用时钟中断来切换线程 418
5.5.6.2?更广泛地使用中断 421
5.5.6.3?虚拟地址空间与分页 421
5.5.6.4?虚拟与现实的边界——系统调用 426
5.5.7  呼唤操作系统 428


第6章?多处理器微体系结构——多核心与缓存
6.1  从超线程到多核心 430
6.1.1  超线程并行 430
6.1.2  多核心/多CPU并行 433
6.1.3  idle线程 434
6.1.4  乱序执行还是SMT? 435
6.1.5  逆超线程? 436
6.1.6  线程与进程 436
6.1.7  多核心访存基本拓扑 437
6.2  缓存十九式 442
6.2.1  缓存是分级的 442
6.2.2  缓存是透明的 442
6.2.3  缓存的容量、频率和延迟 443
6.2.4  私有缓存和共享缓存 443
6.2.5  Inclusive模式和Exclusive模式 444
6.2.6  Dirty标记位和Valid标记位 444
6.2.7  缓存行 445
6.2.8  全关联/直接关联/组关联 446
6.2.9  用虚拟地址查缓存 451
6.2.10  缓存的同名问题 453
6.2.11  缓存的别名问题 453
6.2.12  页面着色 455
6.2.13  小结及商用CPU的缓存模式 457
6.2.14  缓存对写入操作的处理 458
6.2.15  Load/Stor Queue与Stream Buffer 459
6.2.16  非阻塞缓存与MSHR 460
6.2.17  缓存行替换策略 462
6.2.18  i_Cache/d_Cache/TLB_ Cache 463
6.2.19  对齐和伪共享 465
6.3  关联起来,为了一致性 465
6.3.1  Crossbar交换矩阵 466
6.3.2  Ring 472
6.3.3?NoC 475
6.3.4  众核心CPU 478
6.3.5  多核心程序执行过程回顾 481
6.3.6  在众核心上执行程序 482
6.4  存储器在网络中的分布 484
6.4.1  CPU片内访存网络与存储器分布 487
6.4.2  CPU片外访存网络 489
6.4.2.1  全总线拓扑及南桥与北桥 490
6.4.2.2  AMD Athlon北桥 492
6.4.2.3  常用网络拓扑及UMA/NUMA 494
6.4.2.4  AMD Opteron北桥 497
6.4.3  参悟全局共享内存架构 499
6.4.4  访存网络的硬分区 501
6.5  QPI片间互联网络简介 502
6.5.1  QPI物理层与同步异步通信原理 503
6.5.2  QPI链路层网络层和消息层 505
6.5.3  QPI的初始化与系统启动 507
6.5.3.1  链路初始化和拓扑发现 507
6.5.3.2  系统启动 507
6.5.4  QPI的扩展性 509
6.6  基于QPI互联的高端服务器架构一览 510
6.6.1  某32路CPU高端主机 510
6.6.2  DELLEMC的双层主板QPI互联 511
6.6.3  IBM x3850/3950 X5/X6主机 511
6.6.4  HP Superdome2主机 515
6.6.5  Fujitsu PQ2K主机 518
6.7  理解多核心访存时空一致性问题 520
6.7.1  访存空间一致性问题 520
6.7.2  访存时间一致性问题 521
6.7.2.1  延迟到达导致的错乱 521
6.7.2.2  访问冲突导致的错乱 521
6.7.2.3  提前执行导致的错乱 522
6.7.2.4  乱序执行导致的错乱 522
6.8  解决多核心访存时间一致性问题 523
6.8.1  互斥访问 523
6.8.2  让子弹飞 526
6.8.3  硬件原生保证的基本时序 527
6.8.4  解决延迟到达错乱问题 529
6.8.5  解决访问冲突错乱问题 530
6.8.6  解决提前执行测错乱问题 530
6.8.7  解决乱序执行错乱问题 531
6.8.8  小结 531
6.9  解决多核心访存空间一致性问题 533
6.9.1  基于总线监听的缓存一致性实现 533
6.9.1.1  Snarfing/Write Sync方式 533
6.9.1.2  Write Invalidate方式 534
6.9.2  推导MESIF状态机 535
6.9.3  MOESI状态机 540
6.9.4  结合MESIF协议进一步理解锁和屏障 540
6.9.5  结合MESIF深刻理解时序一致性模型 545
6.9.5.1  终极一致性(UC) 545
6.9.5.2  严格一致性(SC) 545
6.9.5.3  顺序一致性(SEC) 545
6.9.5.4  处理器一致性(PC) 546
6.9.5.5  弱一致性(WC) 546
6.9.6  缓存行并发写优化 546
6.9.7  Cache Agent的位置 547
6.9.8  基于共享总线的嗅探过滤机制 548
6.9.8.1  bitmap粗略过滤 549
6.9.8.2  向量bitmap精确过滤 549
6.9.8.3  布隆过滤器与散列采样 550
6.9.8.4  JETTY filter 551
6.9.8.5  流寄存器式过滤器 553
6.9.8.6  带计数器的SR过滤器 554
6.9.8.7  蓝色基因/P中的嗅探过滤器 554
6.9.9  基于分布式访存网络的缓存一致性实现 555
6.9.9.1  分布式网络对CC机制的影响 557
6.9.9.2  多级缓存和多CPU对CC机制的影响 558
6.9.9.3?即便无锁也要保证一致 558
6.9.10  分布式网络下的嗅探过滤机制 559
6.9.10.1  在LLC中增设bitmap向量过滤片内广播 559
6.9.10.2  Ring网络的三种嗅探方式 561
6.9.10.3  增设远程目录过滤片外广播 562
6.9.10.4  利用HA代理片内CC事务 565
6.9.10.5  小结 569
6.9.10.6  在网络路径上实施嗅探过滤 570
6.9.11  缓存一致性实现实际案例 571
6.9.11.1  Intel Blackford北桥CC实现 572
6.9.11.2  AMD Opteron 800平台CC实现 573
6.9.11.3  北桥与NC(Node Controller) 575
6.9.11.4  Horus NC实现 576
6.9.11.5  SGI Origin 2000 NC实现 580
6.9.11.6  IBM PERCS超级计算机中的NC 583
6.9.11.7  Intel CPU在QPI网络下的CC实现 585
6.9.11.8  小结 588
第7章?计算机I/O子系统
7.1  计算机I/O的基本套路 593
7.1.1  Programmed IO+Polling模式 593
7.1.2  DMA+中断模式 598
7.1.3  DMA与缓存一致性 600
7.1.4  Scatter/Gather List(SGL) 601
7.1.5  使用队列提升I/O性能 601
7.1.6  固件/Firmware 604
7.1.6.1?固件与OS的区别与联系 605
7.1.6.2?固件的层次 605
7.1.6.3?固件的格式 605
7.1.6.4?固件存在哪 605
7.1.6.5?固件如何加载运行 606
7.1.7  网络I/O基本套路 606
7.1.8  接入更多外部设备 610
7.1.9  一台完整计算机的全貌 614
7.2  中断处理 616
7.3  网络通信系统 619
7.3.1  OSI七层标准模型 620
7.3.1.1?应用层 620
7.3.1.2?表示层 620
7.3.1.3?会话层 621
7.3.1.4?传输层 621
7.3.1.5?网络层 624
7.3.1.6?链路层 626
7.3.1.7?物理层 627
7.3.1.8?传送层 627
7.3.1.9?小结 629
7.3.2  底层信号处理系统 630
7.3.2.1?AC耦合电容及N/Mbit编码 630
7.3.2.2?加扰的作用 634
7.3.2.3?各种线路编码 636
7.3.2.4?各种模拟调制技术 637
7.3.2.5?频谱宽度与比特率 641
7.3.2.6?数字信号处理与数字滤波 646
7.3.3  以太网——高速通用非访存式后端外部网络 647
7.3.3.1?以太网的网络层 647
7.3.3.2?以太网的链路层和物理层 652
7.3.3.3?以太网I/O控制器 652
7.4  典型I/O网络简介 652
7.4.1?PCIE——高速通用访存式前端I/O网络 654
7.4.1.1?PCI网络拓扑及数据收发过程 654
7.4.1.2?PCI设备的配置空间 656
7.4.1.3?PCI设备的枚举和配置 658
7.4.1.4?PCI设备寄存器的物理地址分配和路由 663
7.4.1.5?中期小结 664
7.4.1.6?PCIE网络拓扑及数据收发过程 665
7.4.1.7?PCIE网络的层次模型 669
7.4.1.8?NTB非透明桥 685
7.4.1.9?PCIE Switch内部 692
7.4.1.10?在PCIE网络中传递消息 697
7.4.1.11?在PCI网络中传递中断信号 698
7.4.1.12?在PCIE网络中传递中断信号 700
7.4.1.13?MSI/MIS-X中断方式 701
7.4.1.14?PCIE体系中的驱动程序层次 706
7.4.1.15?小结 708
7.4.2  USB——中速通用非访存式后端I/O网络 709
7.4.2.1?USB网络的基本拓扑 712
7.4.2.2?USB设备的枚举和配置 714
7.4.2.3?USB网络协议栈 719
7.4.2.4?USB网络上的数据包传送 722
7.4.2.5?USB网络的层次模型 728
7.4.2.6?小结 729
7.4.3  SAS——高速专用非访存式后端I/O网络 730
7.4.3.1?SAS网络拓扑及设备编号规则 733
7.4.3.2?SAS网络中的Order Set一览 734
7.4.3.3?SAS的链路初始化和速率协商 734
7.4.3.4?SAS网络的初始化与设备枚举 743
7.4.3.5?SAS和SCSI的Host端协议栈 753
7.4.3.6?形形色色的登记表 761
7.4.3.7?SAS网络的数据传输方式 778
7.4.3.8?SAS网络的层次模型 783
7.4.3.9?SAS控制器内部架构 789
7.4.3.10?SAS SXP内部架构 797
7.5  本章小结 797
第8章?绘声绘色——计算机如何处理声音和图像
8.1  声音处理系统 802
8.1.1  让蜂鸣器说话 802
8.1.2  音乐是可以被勾兑出来的 803
8.1.2.1?可编程音符生成器PSG 804
8.1.2.2?音乐合成器 805
8.1.2.3?FM合成及波表合成 809
8.1.3  声卡发展史及架构简析 812
8.1.4  与发声控制相关的Host端角色 817
8.1.5  让计算机成为演奏家 832
8.1.6  独立声卡的没落 832
8.2  图形处理系统 842
8.2.1  用声音来画图 846
8.2.2  文字模式 849
8.2.2.1?向量文本模式显示 849
8.2.2.2?用ROM存放字形库 852
8.2.2.3?点阵文字显示模式 852
8.2.2.4?单色显示适配器 855
8.2.2.5?点阵作图与ASCII Art 856
8.2.3  图形模式 857
8.2.3.1?Color Graphics Adapter(CGA) 857
8.2.3.2?Enhanced Graphics Adapter(EGA) 860
8.2.3.3?Video BIOS ROM的引入 861
8.2.3.4?Video Graphics Array(VGA) 863
8.2.3.5?VGA的后续 864
8.2.3.6?当代显卡的图形和文字模式 864
8.2.4  2D图形及其渲染流程 864
8.2.4.1?2D图形加速卡PGC 866
8.2.4.2?2D图形模型的准备 872
8.2.4.3?对模型进行渲染 874
8.2.4.4?矢量图和bitmap 875
8.2.4.5?顶点、索引和图元 876
8.2.4.6?2D图形动画 876
8.2.4.7?坐标変换及矩阵运算 878
8.2.4.8?2D图形渲染流程小结 880
8.2.4.9?2D绘图库以及渲染加速 880
8.2.5  3D图形模型和表示方法 885
8.2.5.1?3D模型的表示 886
8.2.5.2?顶点的4个基本属性 889
8.2.6  3D图形渲染流程 893
8.2.6.1?顶点坐标变换阶段/Vertex Transform 893
8.2.6.2?顶点光照计算阶段/Vertex Lighting 897
8.2.6.3?栅格化阶段/Rasterization 899
8.2.6.4?像素着色阶段/Pixel Shading 900
8.2.6.5?遮挡判断阶段/Testing 909
8.2.6.6?混合及后处理阶段/Blending 914
8.2.6.7?3D渲染流程小结 914
8.2.7  典型的3D渲染特效简介 915
8.2.7.1?法线贴图(Normal Map) 916
8.2.7.2?曲面细分与置换贴图(Tessellation) 920
8.2.7.3?视差/位移贴图(Parallax Map) 922
8.2.7.4?物体投影(Shadow) 925
8.2.7.5?抗锯齿(Anti-Aliasing) 926
8.2.7.6?光照控制纹理(Light Mapping) 931
8.2.7.7?纹理动画(Texture Animation) 934
8.2.8  当代3D游戏制作过程 936
8.2.9  3D图形加速渲染 937
8.2.9.1?3D图形渲染管线回顾 939
8.2.9.2?固定渲染管线3D图形加速 940
8.2.9.3?可编程渲染管线3D图形加速 943
8.2.9.4?Unified可编程3D图形加速 955
8.2.9.5?深入AMD R600 GPU内部执行流程 955
8.2.10  3D绘图API 及软件栈 963
8.2.10.1?GPU内核态驱动及命令的下发 965
8.2.10.2?GPU用户态驱动及命令的翻译 966
8.2.10.3?久违了OpenGL与Direct3D 969
8.2.10.4?Windows图形软件栈 973
8.2.11  3D图形加速卡的辉煌时代 974
8.2.11.1?街机/家用机/手机上的GPU 974
8.2.11.2?SGI Onyx超级图形加速工作站 978
8.2.11.3?S3 ViRGE时代 979
8.11.2.4?3dfx Voodoo时代 980
8.2.11.5?Nvidia和ATI时代 985
8.3  结语和期盼 991
第9章?万箭齐发——加速计算与超级计算机
9.1  科学计算到底在算些什么 994
9.1.1  蛋白质分子的故事 994
9.1.1.1?氧气运输的故事 994
9.1.1.2?更复杂的生化逻辑是如何完成的 997
9.1.2  如何模拟蛋白质分子自折叠过程 998
9.1.3  将模拟过程映射为多线程并行计算 999
9.1.4  其他科学计算场景 1000
9.2  大规模系统共享内存之向往 1000
9.2.1  UMA/NUMA/MPP 1001
9.2.2   OpenMP并行编程 1002
9.3  基于消息传递的非共享内存系统 1002
9.3.1  采用消息传递方式同步数据 1003
9.3.2  MPI库基本函数简介 1005
9.3.3  MPI库聚合通信函数简介 1006
9.4  超级计算机 1010
9.4.1  IBM蓝色基因 1011
9.4.1.1?中央处理器(CPU) 1011
9.4.1.2?计算节点和I/O节点 1013
9.4.1.3?三个独立网络同时传递数据 1013
9.4.1.4?蓝色基因Q的网络控制和路由实现 1014
9.4.1.5?节点卡及整机架布局 1016
9.4.1.6?整体系统拓扑 1016
9.4.1.7?Service Node 1016
9.4.1.8?Service Card 1018
9.4.1.9?时钟同步 1019
9.4.1.10?系统启动 1021
9.4.1.11?软件安装与用户认证 1021
9.4.1.12?状态监控 1022
9.4.1.13?计算任务的执行 1022
9.4.1.14?操作系统 1022
9.4.1.15?Login Node 1024
9.4.1.16?存储系统 1024
9.4.2  圣地亚哥Gordon 1024
9.4.3  Fujitsu PrimeHPC FX10 1025
9.4.3.1?SPARC64 IXfx CPU 1025
9.4.3.2?水冷主板 1026
9.4.3.3?Tofu六维网络互联拓扑 1026
9.4.3.4?ICC互联芯片 1028
9.5  利用GPU加速计算 1030
9.5.1  Direct3D中的Compute Shader 1031
9.5.2  OpenCL和OpenACC 1031
9.5.3  NVIDIA的CUDA API 1031
9.5.3.1?CUDA基本架构 1031
9.5.3.2?一个极简的CUDA程序 1034
9.5.3.3?CUDA对线程的编排方式 1035
9.5.3.4?GPU对CUDA线程的调度方式 1036
9.5.3.5?CUDA程序的内存架构 1038
9.5.3.6?基于CUDA的PhysX库效果 1043
9.6?利用PLD和ASIC加速计算 1046
9.6.1  PAL/PLA是如何工作的 1049
9.6.2  CPLD是如何工作的 1049
9.6.3  FPGA是如何工作的 1052
9.6.4  FPGA编程及应用形态 1058
9.6.5  Xilinx FPGA架构及相关概念 1062
9.6.6  ASIC与PLD的关系 1062
9.7  小结:软归软 硬归硬 1063
0章?计算机操作系统——舞台幕后的工作者
10.1  内存布局与管理 1068
10.1.1  实模式与保护模式 1068
10.1.2  分区式内存管理 1070
10.1.3  8086分段+实模式 1071
10.1.4  80286分段+保护模式 1074
10.1.4.1  全局描述符表 1074
10.1.4.2  实现权限检查 1076
10.1.4.3  本地/局部描述符表 1076
10.1.5  80386分段+分页模式 1079
10.1.5.1  页目录/页表/页面 1079
10.1.5.2  比较分页和分段机制 1080
10.1.5.3  Flat分段模式 1081
10.1.5.4?分页的控制参数 1083
10.1.5.5  MMU和TLB 1086
10.1.6  DOS下的内存管理 1087
10.1.6.1  常规内存和上位内存 1088
10.1.6.2  EMS内存扩充卡 1089
10.1.6.3  上位内存块(UMB) 1090
10.1.6.4  高位内存区(HMA) 1090
10.1.6.5  扩展内存(XMS) 1090
10.1.6.6  用XMS顶替EMS 1090
10.1.7  后DOS时代x86内存布局 1091
10.1.7.1  E820表 1091
10.1.7.2  物理地址扩展(PAE) 1092
10.1.7.3  x86物理内存布局 1092
10.1.8  Linux下的内存管理 1094
10.1.8.1  32位Linux内存布局 1094
10.1.8.2  相关模块数据结构 1098
10.1.8.3  brk和mmap系统调用 1100
10.1.8.4  malloc/calloc/realloc函数 1104
10.1.8.5  buddy和slab算法 1105
10.2  任务创建与管理 1109
10.2.1  32位x86处理器任务管理支持 1110
10.2.1.1  用户栈与内核栈 1111
10.2.1.2  线程和中断上下文 1113
10.2.1.3  任务切换机制 1116
10.2.1.4  任务嵌套/任务链 1122
10.2.1.5  小结 1125
10.2.2  32位Linux的任务创建与管理 1126
10.2.2.1  PCB/task_struct{ } 1127
10.2.2.2  Linux的任务软切换机制 1130
10.2.2.3  进程0的创建和运行 1132
10.2.2.4  进程1和2的创建和运行 1136
10.2.2.5  在用户态创建和运行任务 1148
10.2.2.6  fork()自测题及深入思考 1153
10.2.2.7  用户空间线程/协程 1155
10.2.2.8  任务状态 1158
10.3  任务间通信与同步 1159
10.3.1  信号及其处理 1159
10.3.2  等待队列与唤醒 1172
10.3.3  进程间通信 1177
10.3.4  锁和同步 1178
10.3.4.1  信号量(Semaphore) 1178
10.3.4.2?互斥量(Mutex) 1181
10.3.4.3  自旋锁(Spinlock) 1181
10.3.4.4  快速互斥量(Futex) 1184
10.3.4.5  条件量(Condition) 1186
10.3.4.6  完成量(Completion) 1187
10.3.4.7  读写锁(RWlock)和RCU锁 1188
10.4  任务调度基本框架 1188
10.4.1  任务的调度时机 1189
10.4.2  用户态和内核态抢占 1190
10.4.3  中期小结 1196
10.4.4  实时与非实时内核 1198
10.4.5  任务调度基本数据结构 1201
10.4.5.1  任务优先级描述 1201
10.4.5.2  三大子调度器 1203
10.4.5.3  运行队列的组织 1204
10.5  任务调度核心方法 1211
10.5.1  简单粗暴的实时任务调度 1211
10.5.2  左右为难的普通任务调度 1213
10.5.3  2.4内核中的O(n)调度器 1214
10.5.4?2.5内核中的O(1)调度器 1215
10.5.5  未被接纳的RSDL普通任务调度器 1216
10.5.6  沿用至今的CFS普通任务调度器 1219
10.5.6.1  指挥棒变为运行时间 1219
10.5.6.2  weight/period/vruntime 1219
10.5.7  多处理器任务负载均衡 1221
10.5.8  任务的Affinity 1224
10.6  中断响应及处理 1224
10.6.1  中断相关基本知识 1224
10.6.1.1  Local和I/O APIC 1224
10.6.1.2  8259A(PIC)中断控制器 1229
10.6.1.3  MSI/MSI-X底层实现 1230
10.6.1.4  IPI处理器间中断 1231
10.6.1.5  可屏蔽/不可屏蔽中断 1232
10.6.1.6  中断的共享和嵌套 1233
10.6.1.7  中断内部/外部优先级 1234
10.6.1.8  中断Affinity及均衡 1234
10.6.2?中断相关数据结构 1238
10.6.2.1?中断描述符表IDT 1240
10.6.2.2?irq_desc[ ]和vector_irq[ ] 1243
10.6.2.3?相关数据结构的初始化 1246
10.6.3?中断基本处理流程 1255
10.6.4?80h号中断(系统调用) 1257
10.6.5?中断上半部和下半部 1260
10.6.5.1?softirq 1261
10.6.5.2?ksoftirqd线程 1262
10.6.5.3?softirq与preempt_count 1264
10.6.5.4?tasklet 1265
10.6.5.5?workqueue 1266
10.6.6?中断线程化 1271
10.6.7?系统的驱动力 1272
10.7?时间管理与时钟中断 1272
10.7.1?表哥的收藏 1273
10.7.1.1?RTC 1273
10.7.1.2?PIT 1273
10.7.1.3?HPET 1274
10.7.1.4?Local Timer 1275
10.7.1.5?TSC 1277
10.7.2?表哥的烦恼 1277
10.7.2.1?软计时 1277
10.7.2.2?软Timer 1277
10.7.2.3?软Tick 1278
10.7.2.4?单调时钟源 1278
10.7.2.5?中断广播唤醒 1279
10.7.2.6?强制周期性中断广播 1280
10.7.3?表哥的记忆 1280
10.7.3.1?Clocksource Device 1280
10.7.3.2?Clockevent Device 1281
10.7.3.3?Local/Global Device 1284
10.7.3.4?HZ/Jiffy/NOHZ 1284
10.7.3.5?各种时间种类 1284
10.7.3.6?低精度定时器时间轮 1285
10.7.3.7?高精度定时器红黑树 1287
10.7.4?表哥的思维 1289
10.7.4.1?tick_init() 1289
10.7.4.2?init_timers() 1290
10.7.4.3?hrtimers_init() 1291
10.7.4.4?timekeeping_init() 1291
10.7.4.5?time_init()/late_time_init() 1291
10.7.4.6?APIC_init_uniprocessor() 1299
10.7.4.7?do_basic_setup()/do_initcalls() 1299
10.7.4.8?初始化流程全局图 1299
10.7.5?表哥的行动 1299
10.7.5.1?初始的低精度+HZ模式 1299
10.7.5.2?切换到低精度+NOHZ模式 1302
10.7.5.3  切换到高精度+NOHZ模式 1305
10.7.5.4  idle与NOHZ 1305
10.7.5.5  切换高精度模式流程图 1306
10.8  VFS与本地FS 1310
10.8.1  VFS目录层 1310
10.8.1.1  目录与VFS 1310
10.8.1.2?目录承载者 1311
10.8.2?本地FS相关数据结构 1313
10.8.3?VFS相关数据结构及初始化 1314
10.8.3.1?Mount流程 1315
10.8.3.2?Open流程 1319
10.8.4?从read到Page Cache 1319
10.8.5?从Page Cache到通用块层 1320
10.8.6?Linux下的异步I/O 1322
10.8.6.1?基于glibc的异步I/O 1324
10.8.6.2?基于libaio的异步I/O 1324
10.9?块I/O协议栈 1327
10.9.1?从通用块层到I/O调度层 1327
10.9.1.1?块设备与buffer page 1327
10.9.1.2?bio 1328
10.9.2?从I/O调度层到块设备驱动 1329
10.9.2.1?Request与Request Queue 1329
10.9.2.2?堵盖儿和掀盖儿 1331
10.9.2.3?_make_request主流程 1333
10.9.2.4?I/O Scheduler 1335
10.9.3?相关数据结构的初始化 1335
10.9.3.1?request_queue初始化 1336
10.9.3.2?gendisk/scsi_disk/block_device初始化 1337
10.9.4  从块设备驱动到SCSI中间层 1338
10.9.5  从SCSI中间层到通道控制器驱动 1339
10.10  网络I/O协议栈 1339
10.10.1  socket的初始化 1342
10.10.2  socket的创建和绑定 1342
10.10.3  发起TCP连接 1343
10.13  小结 1347
1章?现代计算机系统——形态与生态
11.1  工业级相关计算机产品 1350
11.1.1  工业控制 1350
11.1.2  军工和航空航天 1351
11.2?企业级相关计算机产品 1352
11.2.1?芯片与板卡 1354
11.2.2  服务器 1356
11.2.2.1  塔式服务器 1356
11.2.2.2?机架式服务器 1357
11.2.2.3?刀片服务器 1359
11.2.2.4?模块化服务器 1362
11.2.2.5?整机柜服务器 1366
11.2.2.6?关键应用主机 1369
11.2.3?网络系统 1369
11.2.3.1?以太网卡 1369
11.2.3.2?以太网交换机和路由器 1370
11.2.4?存储系统 1372
11.2.4.1?机械磁盘 1375
11.2.4.2?固态硬盘 1387
11.2.4.3?SAN存储系统 1393
11.2.4.4?分布式存储系统 1402
11.2.4.5?数据恢复 1404
11.2.5?超融合系统 1407
11.2.6?数据备份和容灾系统 1411
11.2.7?云计算和云存储 1416
11.2.8?自主可控系统 1423
11.3?消费级相关计算机产品 1425
11.3.1?智能手机 1426
11.3.2?电视盒/智能电视 1426
11.3.3?摄像机 1427
11.3.4?玩具 1427
2章?机器学习与人工智能
12.1?回归分析:愚者千虑必有一得 1430
12.2?逻辑分类:不是什么都能一刀切 1433
12.3?神经网络:竟可万能拟合 1436
12.4?深度神经网络:四两拨千斤 1448
12.5?对象检测:先抠图后识别 1454
12.6?卷积神经网络:图像识别利器 1455
12.7?可视化展现:盲人真的摸出了象 1466
12.8?具体实现:搭台唱戏和硬功夫 1479
12.9?人工智能:本能、智能、超能 1491
尾声?狂想计算机——以创造者的名义
1. 狂想计算机 1494
2. 狂想组合逻辑电路与通用代码 1495
3. 狂想分子逻辑门与光逻辑门计算机 1495
4. 狂想生物分子计算机 1497
5. 狂想模拟信号计算机 1502
6. 狂想空间场计算机 1504
7. 狂想计算机世界的时空 1505
后 记

商品参数
基本信息
出版社 清华大学出版社
ISBN 9787302526476
条码 9787302526476
编者 冬瓜哥
译者 --
出版年月 2020-10-01 00:00:00.0
开本 其他
装帧 平装
页数 0
字数 3546
版次 1
印次 1
纸张 一般胶版纸
商品评论

暂无商品评论信息 [发表商品评论]

商品咨询

暂无商品咨询信息 [发表商品咨询]