计算机组成原理8-FPGA、ASIC、TPU、虚拟机

 

1、FPGA:现场可编程门阵列(Field-Programmable Gate Array)(原文)

    产生背景:

    CPU上的晶体管数量极多,一个四核 i7 的 Intel CPU,上面的晶体管数量差不多有 20 亿个。设计一个 CPU,就要想办法连接这 20 亿个晶体管。更难的是要设计、验证各种各样的技术方案,可能会遇到各种各样的 Bug。如果我们每次验证一个方案,都要单独设计生产一块芯片,那这个代价也太高了。

 

 

 

    FPGA是什么:

    一个可以通过编程来控制的硬件,能够去进行编程组合一个一个门电路。像软件一样对硬件编程,以组合实现复杂的芯片功能。


    实现方式:

    

 

 

    (1)用存储换功能实现组合逻辑。基本的电路逻辑,不是采用布线连接的方式进行的,而是预先根在软件里面设计的逻辑电路,算出对应的真值表,然后直接存到一个叫作 LUT(Look-Up Table,查找表)的电路里面。 LUT ,其实就是一块存储空间,里面存储了“特定的输入信号下,对应输出 0 还是 1”。

    (2)对于需要实现的时序逻辑电路,可以在 FPGA 里面直接放上 D 触发器,作为寄存器。把很多个 LUT 的电路和寄存器组合在一起,变成一个叫作逻辑簇(Logic Cluster)的东西。在 FPGA 里,这样组合了多个 LUT 和寄存器的设备,也被叫做 CLB(Configurable Logic Block,可配置逻辑块)。

    (3)通过可编程逻辑布线,来连接各个不同的 CLB,最终实现我们想要实现的芯片功能。可编程逻辑布线里面,部署很多电路,通过程序控制开关,实现不同的芯片功能。


2、ASIC:专用集成电路

    ASIC 是针对专门用途设计的,所以它的电路更精简,单片的制造成本也比 CPU 更低。功耗也更低。ASIC 的电路设计,需要仿真、验证,还需要经过流片(Tape out),变成一个印刷的电路版,最终变成芯片。这整个从研发到上市的过程,研发成本较高。

 

3、TPU (原文)

    ASIC最知名、最具有实用价值的部分。

    从深度学习的推断角度来考虑,TPU 并不需要太灵活的可编程能力,只要能够迭代完成常见的深度学习推断过程中一层的计算过程就好了。所以,TPU 的硬件构造里面,把矩阵乘法、累加器和激活函数都做成了对应的专门的电路。


4、虚拟机(原文)

(1)是什么

    虚拟机(Virtual Machine)技术,其实就是指在现有硬件的操作系统上,能够模拟一个计算机系统的技术。而模拟一个计算机系统,最简单的办法,其实不能算是虚拟机技术,而是一个模拟器(Emulator)。

(2)运行方法

    开发一个应用程序,跑在的操作系统上。这个应用程序呢,可以识别要模拟的、计算机系统的程序格式和指令,然后一条条去解释执行。

(3)缺陷

    做不到精确的“模拟”。很多的老旧的硬件的程序运行,要依赖特定的电路乃至电路特有的时钟频率,想要通过软件达到 100% 模拟是很难做到的。第二个就是这种解释执行的方式,要经过各种解释和翻译工作,性能实在太差。


5、虚拟机监视器

    在现有的物理服务器的硬件和操作系统上,去跑一个完整的、不需要做任何修改的客户机操作系统(Guest OS),加入的一个中间层。

 

6、Docker

    实际的物理机上,我们可能同时运行了多个的虚拟机,而这每一个虚拟机,都运行了一个属于自己的单独的操作系统。意味着要多消耗一些资源在 CPU、内存乃至磁盘空间上。

    使用 Docker 来搭建微服务,将资源和环境隔离的“独立空间”。Docker 并不能算是一种虚拟机技术,而只能算是一种资源隔离的技术而已。


 

posted @ 2020-03-23 10:39  庞某人  阅读(677)  评论(0编辑  收藏  举报