Linux驱动开发之 二 (那些必须要了解的硬件知识 之 处理器篇)

Linux驱动开发之 二 (那些必须要了解的硬件知识 之 处理器篇)

本文中部分内容源自网络,如有侵权请联系博主,谢谢

老谢一直以“软硬通杀”的标准来要求自己。搞软件的工程师,有必要了解底层硬件的基本原理;搞驱动的工程师,则必须知道底层硬件的工作原理;而搞最底层的硬件工程师,同样需要了解一些基本的软件知识。

也许有的人会不同意这个看法,他们认为一个优秀的系统,最理想的境界是应用层和底层硬件完全隔离,即应用层的开发完全脱离硬件基础。这一点老谢也认同,但是我们讨论的是工程师本素质问题,而不是嵌入式系统开发问题。作为工程师的基本素质,老谢坚持认为:软硬互通,有所专向,或软或硬,方为王道。

那么,在Linux驱动开发学习过程中,有哪些硬件知识是我们必须要知道的呢? 老谢计划用几个篇幅逐一地和大家一起学习。

而,今天的主角是处理器,以它作为硬件知识篇的开始。

一、搞清MPU和MCU的关系

MPU,Micro Process Unit,微处理器;
MCU,Micro Control Unit,微控制器。

MPU通常代表一个CPU(中央处理器),而MCU则强调把CPU、存储器、外围电路集成在一颗IC内部。

定位不同的产品(MCU)可能包含共同的CPU核,但是集成的扩展电路则不一样,取决于这颗MCU的功能定位或市场定位。

一个典型的MCU框架图如下:

Linux驱动开发之 二 (那些必须要了解的硬件知识 之 处理器篇)_第1张图片

目前比较主流的CPU核

  1. Advanced RISC Machines的ARM
  2. Silicon Graphics的MIPS
  3. IBM和Motorola的PowerPC

ARM的功耗低,在手持设备、通信设备中应用最为广泛。

CPU的体系架构,分为两类:冯.诺依曼结构和哈弗结构。从指令集的角度,CPU又可分为RISC精简指令集计算机和CISC复杂指令集计算机。CSIC 强调增强指令的能力、减少目标代码的数量,但是指令复杂,指令周期长;而RISC强调尽可能减少指令集、指令单周期执行,但是目标代码会更大。ARM、MIPS、PowerPC等CPU内核都采用了RISC指令集。目前,RISC和CSIC的融合非常明显。

我们了解这些概念即可,如需展开讨论,请百度。

二、DSP数字信号处理器

数字信号处理器(DSP)针对通信、图像、语音和视频处理等领域的算法而设计。它包含独立的硬件乘法器。DSP的乘法指令一般在单周期内完成,且优化了卷积、数字滤波、FFT(快速傅立叶变换)、相关、矩阵运算等算法中的大量重复乘法。

DSP分为两类,一类是定点DSP,一类是浮点DSP。浮点DSP的浮点运算用硬件来实现,可以在单周期内完成,因而其浮点运算处理速度高于定点DSP。而定点DSP只能用定点运算模拟浮点运算。

MCU和DSP也有相互融合以取长补短的趋势,如数字信号控制器(DSC)即为MCU+DSP。

三、专用集成电路ASIC

对于某些应用场合,使用ASIC(专用集成电路)往往是低成本且高性能的方案。ASIC专门针对特定应用而设计,不具备也不需要灵活的编程能力。使用ASIC完成同样地功能往往比直接使用CPU资源或CPLD(复杂可编程逻辑器件)/FPGA(现场可编程门阵列)更廉价、高效。

最后,处理器的分类框图如下图

Linux驱动开发之 二 (那些必须要了解的硬件知识 之 处理器篇)_第2张图片

在实际项目的硬件方案中,往往会根据应用的需求选择通用处理器、数字信号处理器、特定领域处理器、CPLD/FPGA 或ASIC 之一的解决方案,在复杂的系统中,这些芯片可能会同时存在,协同合作,各自发挥自己的长处。

老谢特别感谢宋宝华老师对Linux驱动的知识分享分析。

itxiebo
20160427

你可能感兴趣的:(linux)