大话计算机 计算机系统底层架构原理极限剖析 卷2
作者:冬瓜哥著
出版时间:2019年版
内容简介
本书共分为12章。第1章介绍数字计算机的设计思路,制作一个按键计算器,在这个过程中逐步理解数字计
算机底层原理。第2章在第1章的基础上,改造按键计算器,实现能够按照编好的程序自动计算,并介绍对应的处
理器内部架构概念。第3章介绍电子计算机的发展史,包括芯片制造等内容。第4章介绍流水线相关知识,包括流
水线、分支预测、乱序执行、超标量等内容。第5章介绍计算机程序架构,理解单个、多个程序如何在处理器上编
译、链接并*终运行的过程。第6章介绍缓存以及多处理器并行执行系统的体系结构,包括互联架构、缓存一致性
架构的原理和实现。第7章介绍计算机I/O基本原理,包括PCIE、USB、SAS三大I/O体系。第8章介绍计算机
是如何处理声音和图像的,包括3D渲染和图形加速原理架构和实现。第9章介绍大规模并行计算、超级计算机原
理和架构,以及可编程逻辑器件(如FPGA等)的原理和架构。第10章介绍现代计算机操作系统基本原理和架构,
包括内存管理、任务调度、中断管理、时间管理等架构原理。第11章介绍现代计算机形态和生态体系,包括计算、
网络、存储方面的实际计算机产品和生态。第12章介绍机器学习和人工智能底层原理和架构实现。
本书适合所有IT行业从业者阅读,包括计算机(PC/服务器/手机/嵌入式)软硬件及云计算/大数据/人工
智能等领域的研发、架构师、项目经理、产品经理、销售、售前。本书也同样适合广大高中生科普之用,另外计算
机相关专业本科生、硕士生、博士生同样可以从本书中获取与课程教材截然不同的丰富营养。
目录
第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