Android深度探索与HAL驱动开发(卷1)-- 第五章随笔

RISC(reduced instruction set computer)精简指令集计算机

简介

  精简指令集,是计算机中央处理器的一种设计模式,也被称为RISC(Reduced Instruction Set Computer的缩写)。[1] 这种设计思路对指令数目和寻址方式都做了精简,使其实现更容易,指令并行执行程度更好,编译器的效率更高。常用的精简指令集微处理器包括DECAlpha、ARC、ARM、AVR、MIPS、PA-RISC、PowerArchitecture(包括PowerPC)和SPARC等。这种设计思路最早的产生缘自于有人发现,尽管传统处理器设计了许多特性让代码编写更加便捷,但这些复杂特性需要几个指令周期才能实现,并且常常不被运行程序所采用。此外,处理器和主内存之间运行速度的差别也变得越来越大。在这些因素促使下,出现了一系列新技术,使处理器的指令得以流水执行,同时降低处理器访问内存的次数。早期,这种指令集的特点是指令数目少,每条指令都采用标准字长、执行时间短、中央处理器的实现细节对于机器级程序是可见的。

发展前景

  鉴于RISC的设计特点以及其无可比拟的优点,RISC体系结构处理器的发展方向:
  一是增加处理器的并行性;
  二是扩展支持可伸缩并行计算机系统的功能;
  三是提高工艺水平。最终RISC与DSP在嵌入式应用中完美融合,密不可分。
  RISC微处理器不仅精简了指令系统,采用超标量和超流水线结构;它们的指令数目只有几十条,却大大增强了并行处理能力。如:1987年SunMicrosystem公司推出的SPARC芯片就是一种超标量结构的RISC处理器。而SGI公司推出的MIPS处理器则采用超流水线结构,这些RISC处理器在构建并行精简指令系统多处理机中起着核心的作用。RISC处理器是当今UNIX领域64位多处理机的主流芯片。

性能特点

  一:由于指令集简化后,流水线以及常用指令均可用硬件执行;  
  二:采用大量的寄存器,使大部分指令操作都在寄存器之间进行,提高了处理速度;
  三:采用缓存—主机—外存三级存储结构,使取数与存数指令分开执行,使处理器可以完成尽可能多的工作,且不因从存储器存取信息而放慢处理速度。

应用特点

  由于RISC处理器指令简单、采用硬布线控制逻辑、处理能力强、速度快,世界上绝大部分UNIX工作站和服务器厂商均采用RISC芯片作CPU用。如原DEC的Alpha21364、IBM的PowerPCG4、HP的PA—8900、SGI的R12000A和SUNMicrosystem公司的UltraSPARC║。

运行特点

  RISC芯片的工作频率一般在400MHZ数量级。时钟频率低,功率消耗少,温升也少,机器不易发生故障和老化,提高了系统的可靠性。单一指令周期容纳多部并行操作。在RISC微处理器发展过程中。曾产生了超长指令字(VLIW)微处理器,它使用非常长的指令组合,把许多条指令连在一起,以能并行执行。VLIW处理器的基本模型是标量代码的执行模型,使每个机器周期内有多个操作。有些RISC处理器中也采用少数VLIW指令来提高处理速度。

时间: 2024-10-25 00:20:20

Android深度探索与HAL驱动开发(卷1)-- 第五章随笔的相关文章

Android深度探索与HAL驱动开发(卷1)-- 第一章随笔

本文主要从 Android版本与对应的linux内核版本关系 和 Android系统架构 两部分来讨论. 1.Android版本与Linux内核的关系 (1)Android最初使用Linux2.6作为其内核,随着Android与Linux内核的发展,不同版本的Android使用的linux内核版本差异较大,所以不同Android版本驱动可能并不通用. 下表显示了目前所有Android版本与linux内核版本的联系. Code name Android Version number Linux K

Android深度探索与HAL驱动开发(卷1)-- 第九章随笔

第9章 硬件抽象层:HAL Hal(Hardware Abstract Layer,硬件抽象层)是建立在Linux驱动之上的一套程序库.这套程序库并不属于Linux内核,而是属于Linux内核层之上的应用层. 编写支持HAL的Linux驱动程序的步骤: 第一步:编写Linux驱动 第二步:编写HAL Library 第三步:编写 Service Library 编写HAL 模块的步骤和原理如下: 第一步:定义结构体和宏 第二步:编写HAL模块的open函数 第三步:定义hw_module_met

Android深度探索与HAL驱动开发(卷1)-- 第二章随笔

Android软件开发是指创建新的Android操作系统的过程.通常是使用Android软件开发工具包(SDK)利用Java语言进行开发. Android SDK Android软件开发工具包(SDK)包括一套全面的开发工具.这些措施包括调试器,库文件,一个基于QEMU的手机模拟器,文档,示例代码和教程.目前支持的开发平台,包括可运行Linux的计算机,Mac OS X 10.5.8以上版本,和Windows XP或更高版本.截至2015年3月, Android 自带的SDK本身不可再用,但软件

Android深度探索与HAL驱动开发(卷1)-- 第七章随笔

应用程序.库.内核.驱动程序的关系   从上到下,一个软件系统可以分为:应用程序.库.操作系统(内核).驱动程序.开发人员可以专注于自己熟悉的部分,对于相邻层,只需要了解它的接口,无需关注它的实现细节.以点亮LED为例,这4层软件的协作关系如下: 1.应用程序使用库提供的open函数打开代表LED的设备文件. 2.库数据open函数传入的参数执行“swi”指令,这条指令会引起CPU异常,进入内核. 3.内核的异常处理函数根据这些参数找到相应的驱动程序,返回一个文件句柄给库,进而返回给应用程序.

Android深度探索与HAL驱动开发(卷1)-- 第十章随笔

第10章 嵌入式Linux的调试技术 通过虚拟文件系统(/proc)进行数据交互 在编写代码时应了解一下几点: 1.creat_proc_read_entry 函数在内部是通过调用creat_proc_entry 函数实现的.所谓只读就是通过 creat_proc_read_entry 函数可以指定处理文件读动作的函数,并且通过mode参数设置文件的只读属性(0944).如果想把只读文件改成读写文件,只需要设置处理文件写动作的函数,并且将文件属性改成0666. 2.Linux文件的读写由属性决定

Android深度探索与HAL驱动开发(卷1)-- 第四章随笔

Linux内核源代码目录含义 arch:包含和硬件体系结构相关的代码,每种平台占一个相应的目录.和32位PC相关的代码存放在i386目录下,其中比较重要的包括kernel(内核核心部分).mm(内存管理).math-emu(浮点单元仿真).lib(硬件相关工具函数).boot(引导程序).pci(PCI总线)和power(CPU相关状态).    block:部分块设备驱动程序.    crypto:常用加密和散列算法(如AES.SHA等),还有一些压缩和CRC校验算法.    Document

Android深度探索与HAL驱动开发(卷1)-- 第六章随笔

内核空间与用户空间 介绍 Linux系统将自身划分为两部分,一部分为核心软件,即是kernel,也称作内核空间,另一部分为普通应用程序,这部分称为用户空间. Linux简化了分段机制,使得虚拟地址与线性地址总是一致,因此,Linux的虚拟地址空间也为0~4G.Linux内核将这4G字节的空间分为两部分.将最高的1G字节(从虚拟地址0xC0000000到0xFFFFFFFF),供内核使用,称为"内核空间".而将较低的3G字节(从虚拟地址 0x00000000到0xBFFFFFFF),供各

Android深度探索(卷1)HAL与驱动开发学习笔记(2)

Android深度探索(卷1)HAL与驱动开发学习笔记(2) 第二章搭建Android开发环境 书中介绍了两种JDK的安装方法, 方法一: 从官网下载JDK并进行配置,解压后在终端打开profile文件来设置PATH环境变量(# soure /etc/profile),打开profile文件后输入下面的内容 export PATH=.:developer/jdk6/bin:$PATH 保存profile文件以后,有两种方法可以重新加载profile文件. 1.# sourse  /etc/pro

Android深度探索(卷1)HAL与驱动开发 心得体会 第十章 嵌入式Linux的调用技术

Android深度探索(卷1)HAL与驱动开发 心得体会 第十章  嵌入式Linux的调用技术 对于复杂的Linux驱动以及HAL等程序库,需要使用各种方法对其进行调试.例如,设置断点,逐步跟踪代码.输出调试信息等.虽然嵌入式Linux在调试方面并没有Visual Studio.Delphi.Eclipse这些可视化工具方便,但是学习一些这方面的技术无疑更有助于开发强大而稳定的Linux内核模块. 对于嵌入式Linux内核模块,可执行程序.代码库的调试可能更要复杂些.因为在大多数时候需要至少两台