当前位置:首页 > 工业技术
大话计算机  计算机系统底层架构原理极限剖析  卷2
大话计算机  计算机系统底层架构原理极限剖析  卷2

大话计算机 计算机系统底层架构原理极限剖析 卷2PDF电子书下载

工业技术

  • 电子书积分:27 积分如何计算积分?
  • 作 者:冬瓜哥著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2019
  • ISBN:9787302526476
  • 页数:1066 页
图书介绍:现代计算机系统的软硬件架构十分复杂,是所有IT相关技术的根源。本书尝试从原始的零认知状态开始,逐步从最基础的数字电路一直介绍到计算机操作系统以及人工智能。本书用通俗的语言、恰到好处的疑问、符合原生态认知思维的切入点,来帮助读者洞悉整个计算机底层世界。本书在写作上遵循“先介绍原因,后思考,然后介绍解决方案,最终提炼抽象成概念”的原则。全书脉络清晰,带领读者重走作者的认知之路。本书集科普、专业一体,用通俗详尽的语言、图表、模型来描述专业知识。
《大话计算机 计算机系统底层架构原理极限剖析 卷2》目录

第6章 多处理器微体系结构——多核心与缓存 430

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 Snarfig/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子系统 593

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 PCIESwitch内部 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章 绘声绘色——计算机如何处理声音和图像 802

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 SGIOnyx超级图形加速工作站 978

8.2.11.3 S3 ViRGE时代 979

8.2.11.4 3dfx Voodoo时代 980

8.2.11.5 Nvidia和ATI时代 985

8.3 结语和期盼 991

第9章 万箭齐发——加速计算与超级计算机 994

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

返回顶部