×
超值优惠券
¥50
100可用 有效期2天

全场图书通用(淘书团除外)

关闭
软硬件融合(超大规模云计算架构创新之路)

软硬件融合(超大规模云计算架构创新之路)

1星价 ¥62.3 (7.0折)
2星价¥62.3 定价¥89.0
图文详情
  • ISBN:9787121409226
  • 装帧:一般胶版纸
  • 册数:暂无
  • 重量:暂无
  • 开本:16开
  • 页数:338
  • 出版时间:2021-05-01
  • 条形码:9787121409226 ; 978-7-121-40922-6

本书特色

适读人群 :云计算,架构,软硬件,融合,创新,优化,计算机体系所有技术人员★ 芯片及互联网行业十年以上工作经验分享 ★ 从多个角度讲解了构成软硬件融合的技术 ★ 案例贴近前沿,内容深入浅出,通俗易懂 ★ 知识覆盖面广,可使读者迅速扩大知识面 ★ 进而轻松驾驭软硬件融合的技术大潮 新技术层出不穷并且快速迭代, 该如何根本性的解决这一挑战? CPU性能瓶颈,DPU脱颖而出? 这,只是问题的开始…… 人工智能对算力和数据量的要求都极其庞大, 什么样的计算架构,才能释放AI处理器的强劲动力? 云场景的异构加速平台该如何构建? GPU、FPGA还是ASIC/DSA? 软件足够灵活,硬件足够高效。 鱼和熊掌,可否兼得? 本书将解决以上所有问题。 ★ 软件背景的同学,可以更深刻地认识硬件, 加深对软硬件之间联系的理解,更好地驾驭硬件 ★ 硬件背景的同学,可以更全面宏观地看待问题, 理解需求、产品、系统、架构等多方面的权衡

内容简介

物联网、大数据及人工智能等新兴技术推动云计算持续、快速地发展,底层硬件越来越无法满足上层软件的发展和迭代需求。本书通过探寻软硬件的技术本质,寻找能够使软件灵活性和硬件高效性相结合的方法,帮助有软件背景的读者更深刻地认识硬件,加深对软硬件之间联系的理解,并且更好地驾驭硬件;同时帮助有硬件背景的读者站在更全面的视角宏观地看待问题,理解需求、产品、系统、架构等多方面的权衡。 本书共9章:章为云计算底层软硬件,第2章为软硬件融合综述,第3章为计算机体系结构基础,第4章为软硬件接口,第5章为算法加速和任务卸载,第6章为虚拟化硬件加速,第7章为异构加速,第8章为云计算体系结构趋势,第9章为融合的系统。 本书立意新颖,案例贴近前沿,内容由浅入深,并且“展望未来”,可以帮助广大互联网及IT行业的软硬件工程师更好地理解软件、硬件及两者之间的内在联系,也可以作为计算机相关专业学生的技术拓展读物。

目录

引言

第1章 云计算底层软硬件

1.1 云计算概述

1.1.1 云计算的概念

1.1.2 IaaS、PaaS和SaaS

1.2 IaaS层核心服务

1.2.1 计算类服务

1.2.2 存储类服务

1.2.3 网络类服务

1.2.4 IaaS层服务总结

1.3 云计算的特点

1.3.1 更大的规模

1.3.2 更“大”的数据

1.3.3 更多的租户

1.3.4 更复杂的网络

1.3.5 安全问题无处不在

1.3.6 面向特定应用场景的云计算服务

1.3.7 服务接口的兼容性和通用性

1.4 底层软硬件挑战

1.4.1 业务异构加速

1.4.2 工作任务卸载

1.4.3 软硬件接口的标准化和灵活性

1.4.4 硬件处理的虚拟化和个性化

1.4.5 业务和管理物理分离

1.4.6 硬件的功能扩展

1.4.7 让硬件快速迭代

1.4.8 硬件高可用

1.5 总结

第2章 软硬件融合综述

2.1 软硬件基本概念

2.1.1 软件和硬件

2.1.2 FPGA、ASIC和SoC

2.1.3 硬件加速原理

2.2 软硬件划分

2.2.1 三个维度

2.2.2 综合分析

2.2.3 平台选择

2.3 软硬件协作

2.3.1 多平台混合架构

2.3.2 软硬件平台的协作

2.3.3 软硬件平台的交互

2.4 软硬件融合

2.4.1 软硬件融合的概念

2.4.2 软硬件融合的特点

2.4.3 软硬件融合技术

第3章 计算机体系结构基础

3.1 计算机原理

3.1.1 处理器架构:从冯·诺依曼架构到RISC-V

3.1.2 内存地址:从寻址模式到MMU

3.1.3 I/O:从CPU中断到DMA

3.1.4 多核互连:从传统总线到网状总线

3.1.5 服务器板级架构

3.2 存储

3.2.1 缓存和存储分层结构

3.2.2 本地存储:磁盘分区和逻辑/物理卷

3.2.3 分布式存储:GFS和存储的“温度”

3.3 网络

3.3.1 基础物理网络:分层和拓扑

3.3.2 虚拟网络:VLAN和VxLAN

3.3.3 软件定义网络:从OpenFlow到P4

3.4 虚拟化

3.4.1 虚拟化的层次、定义和分类

3.4.2 CPU虚拟化:从软件模拟到完全硬件

3.4.3 内存虚拟化:影子页表和EPT

3.4.4 I/O设备虚拟化:从软件模拟到SR-IOV

3.4.5 容器虚拟化:Docker和Kubernetes介绍

第4章 软硬件接口

4.1 软硬件接口概述

4.1.1 软硬件接口定义

4.1.2 生产者-消费者模型

4.1.3 用户态的PMD:DPDK和SPDK

4.2 总线互连

4.2.1 AMBA总线

4.2.2 片上网络NoC总线

4.2.3 片间高速总线PCIe及SR-IOV

4.2.4 对称的缓存一致性总线CCIX

4.2.5 非对称的缓存一致性总线CXL

4.2.6 总线互连总结

4.3 通用接口Virtio

4.3.1 Virtio寄存器

4.3.2 Virtqueue交互队列

4.3.3 Virtio交互

4.3.4 总结

4.4 高速网络接口RDMA

4.4.1 基本概念

4.4.2 RoCE分层

4.4.3 RDMA接口

4.4.4 RDMA总结

4.5 高速存储接口NVMe

4.5.1 NVMe概述

4.5.2 NVMe寄存器

4.5.3 NVMe队列

4.5.4 NVMe命令结构

4.5.5 网络存储接口NVMeoF

4.5.6 NVMe及NVMeoF总结

4.6 软硬件接口总结

4.6.1 接口分层

4.6.2 接口共享

第5章 算法加速和任务卸载

5.1 基本概念

5.1.1 硬件加速

5.1.2 硬件处理模块

5.1.3 算法加速和任务卸载的概念

5.2 算法加速

5.2.1 加密算法加速

5.2.2 压缩算法加速

5.2.3 数据冗余算法加速

5.2.4 正则表达式算法加速

5.2.5 加速器性能设计原则

5.3 任务卸载

5.3.1 任务卸载模型

5.3.2 IPsec卸载

5.3.3 虚拟网络卸载

5.3.4 远程存储卸载

5.3.5 虚拟化卸载

5.4 算法加速和任务卸载总结

5.4.1 算法加速是基础

5.4.2 任务卸载是多系统协作

第6章 虚拟化硬件加速

6.1 基本概念

6.1.1 软硬件中的抽象

6.1.2 虚拟化抽象

6.1.3 虚拟化模型

6.1.4 虚拟化加速的必要性

6.2 虚拟化的硬件处理

6.2.1 流水线处理

6.2.2 虚拟化映射

6.2.3 缓存机制

6.2.4 通用虚拟化流水线

6.3 网络虚拟化处理

6.3.1 包处理用于网络虚拟化

6.3.2 定制的网络包处理

6.3.3 ASIC软件可编程包处理

6.3.4 FPGA硬件可编程包处理

6.3.5 案例:Mellanox FlexFlow

6.3.6 网络包处理总结

6.4 存储虚拟化处理

6.4.1 分布式存储Ceph

6.4.2 以事务为单位的存储处理

6.4.3 远程存储虚拟化加速

6.4.4 本地存储虚拟化加速

6.5 虚拟化硬件加速总结

6.5.1 灵活的高性能流水线

6.5.2 高性能缓存机制

6.5.3 可软件编程、通用、数据流驱动的数据处理引擎

6.5.4 虚拟化硬件加速的意义

6.5.5 其他虚拟化加速场景

第7章 异构加速

7.1 异构计算概述

7.1.1 基本概念(并行计算、异构计算)

7.1.2 典型案例

7.1.3 性能约束和优化

7.1.4 易用性思考

7.2 GPU和CUDA

7.2.1 GPU和CUDA概念

7.2.2 GPU硬件架构

7.2.3 CUDA编程模型

7.3 OpenCL和FPGA异构计算

7.3.1 OpenCL

7.3.2 Xilinx SDAccel

7.3.3 英特尔加速栈

7.4 DSA

7.4.1 DSA发展背景

7.4.2 DSA典型领域:DNN

7.4.3 ASIC实现:谷歌TPU

7.4.4 FPGA实现:微软Catapult

7.4.5 Chiplet实现:OCP ODSA

7.5 异构加速计算总结

7.5.1 平台选择(GPU、FPGA、ASIC/DSA)

7.5.2 异构计算加速优化

第8章 云计算体系结构趋势

8.1 概述

8.2 业务和管理分离

8.2.1 虚拟化视角:I/O及管理的卸载

8.2.2 体系结构视角:以数据为中心

8.2.3 Nitro系统

8.2.4 Mellanox Bluefield DPU

8.2.5 总结

8.3 业务的异构加速

8.3.1 业务加速概述

8.3.2 DSA加速:谷歌TPU服务

8.3.3 FPGA加速:FaaS

8.3.4 异构计算架构演进

8.4 存储的加速和定制

8.4.1 存储概述

8.4.2 热存储服务器:Xilinx NVMeoF参考设计

8.4.3 机架级冷存储:微软Pelican

8.5 网络可编程和性能优化

8.5.1 数据中心网络综述

8.5.2 数据面编程交换芯片

8.5.3 高性能网络优化

8.6 硬件定制

8.6.1 硬件定制概述

8.6.2 亚马逊的硬件定制

8.6.3 OCP开放计算项目

第9章 融合的系统

9.1 软硬件融合系统栈

9.1.1 系统边界:多数据中心

9.1.2 数据中心的系统堆栈

9.2 分层的系统实现

9.2.1 迭代的系统

9.2.2 分域的硬件平台

9.2.3 不同层次的实现

9.2.4 软硬件协同设计

9.3 深层次开放合作

9.3.1 软硬件的距离越来越大

9.3.2 互联网公司自研芯片的优劣势

9.3.3 深层次的开放合作

参考文献

展开全部

节选

5.4 算法加速和任务卸载总结 算法加速是各种硬件加速的基础,从系统中提炼核心的算法并将其硬件实现,以达到加速的目的。任务有可能全部卸载,也有可能部分卸载;任务的控制面有可能卸载,也有可能不卸载。任务卸载需要通过一定的基础框架机制来快速实现两个或多个系统之间的协作。 5.4.1 算法加速是基础 算法加速是一切硬件加速的基础,需要通过软硬件划分,合理地确定算法复杂度及功能的弹性。适合算法加速的软件任务具有一定的共同特征:高密度的计算和访存。 1.算法加速核心 硬件加速本质上是把密集的计算和数据处理(不管是算法加速或任务卸载)都通过专用的硬件算法加速模块完成。如图5.21所示,任务卸载核心的是任务卸载硬件部分实现的特定算法加速器,外围的软件、硬件接口在保证交互性能(不成为瓶颈)的情况下,加速性能则完全依赖算法加速模块本身。 因此,在系统设计和算法硬件实现的时候,选择什么样的算法、算法具有什么样的参数特征及I/O规格定义等,以及算法实现的微架构(如流水线、并行、频率、吞吐量、延时等),会变得非常关键。并且,定制的算法加速器也需要具备一定的配置能力。例如,AES算法加速器的加密和解密是共享处理引擎的,只是通过设置不同的处理模式(加密或解密模式)来进行加密或解密处理的。 2.算法加速的设计权衡 通用CPU加入了各种复杂的向量处理及AES等扩展指令,同时具有非常丰富和灵活的软件生态;GPU提供数以千计的线程并行,同时在框架及库方面对很多场景进行了优化,整个GPU生态相当成熟。这些CPU、GPU平台上的优势都不同程度地对定制算法加速(包括FPGA实现和ASIC实现)的应用范围形成了挤压。 算法加速还需要考虑数据交互的开销。算法加速与其他软件或硬件的I/O数据交互需要一定的代价(如数据传输延迟),这部分代价会降低算法加速的整体性能。算法加速要考虑到算法加速器的I/O总线带宽和加速引擎处理带宽的平衡:在总线带宽足够的时候,通过增加并行的加速处理引擎数量来提升处理带宽;在总线带宽可能成为瓶颈的时候,要考虑增加总线带宽使之不成为性能瓶颈,或者通过优化数据交互来提升总线利用率等。 面向特定场景性能优化、定制的硬件算法加速器的灵活性远小于软件,并且算法加速整体开发的工作量很大,系统的复杂度提升。因此,算法加速需要面向大规模计算和数据处理的场景,并且具有足够大的规模化应用,这样才能真正通过算法加速来提升性能和降低整体成本。 3.适合加速的程序 通常我们会有一个基本的认识:如果一个程序消耗CPU资源较多,其性能、延迟等指标较难满足系统要求,那么会考虑通过算法加速的方式来优化性能、成本等各项指标。我们以运行于CPU的工作任务程序(指令)流为样本,深入分析程序流的规律,看哪些指令序列适合硬件加速。 我们分析不同类型的CPU指令加速特征,具体如表5.5所示。 总结而言,一个适合硬件加速的程序一般具有如下基本特征。 l 大批量的数据处理。 l 计算密集型。 l 具有很多次的循环处理。 l CPU计算资源占用很大,计算成本高。 l 处理吞吐量、延迟等性能不满足系统要求。 l 业务规模足够大。 5.4.2 任务卸载是多系统协作 我们通过如下三个方面来理解任务卸载的多系统协作。 l 软硬件协作,既包括控制面和数据面的协作,也包括不同任务或子任务间的协作。 l 既可能是任务全部卸载,也可能是任务部分卸载。 l 任务卸载需要有一套通用的快速开发软硬件框架。 1.任务卸载的软硬件协作 我们在5.3.1节介绍了任务卸载模型,在这里,以卸载任务的硬件处理部分为研究对象,分析整个任务硬件处理模块的各种交互。 如图5.31所示,假设任务由硬件处理的子任务A和软件处理的子任务B组成,则任务的硬件部分(子任务A)通常需要如下四个方面的交互协作。 l 任务硬件部分的驱动程序:控制任务硬件处理部分的初始化和运行。 l 任务的软件部分(子任务B):和任务硬件部分协作,完成整个任务,两者之间需要数据交互。 l 任务的硬件部分跟其他硬件处理模块的接口:用于跟其他硬件处理模块的数据交互。 l 任务的软件接口:用于跟其他运行于软件的任务进行数据交互。

作者简介

黄朝波 芯片及互联网行业十年以上工作经验,UCloud芯片及硬件研发负责人。 曾在Marvell从事ARMv7/v8架构高性能多核CPU设计和验证,在Startup公司Simplight从事自主多线程处理器及4G LTE基带SOC芯片设计。 物联网公司创业经历,技术负责人,负责从硬件、软件到云平台的研发工作。本科毕业于西北工业大学,研究生毕业于国防科技大学,在国防科技大学学习期间有幸参与“飞腾”处理器项目研发。

预估到手价 ×

预估到手价是按参与促销活动、以最优惠的购买方案计算出的价格(不含优惠券部分),仅供参考,未必等同于实际到手价。

确定
快速
导航