这本书介绍了处理器的方方面面,是初学者必读书之一

第1章漫游计算机世界

你对以往知道的越多,对未来就看的越远。 --丘吉尔

如果人们不相信数学很简单,那时因为他们没有认识到生活有多复杂。--冯诺依曼

1.1计算机前世、今生、来世

1、计算机之父,3个人,最出名的是冯诺依曼,更好的称他们为“计算机之叔”

2、程序思想:计算机是织布机的后代

3、计算机第一人:巴贝奇,机械结构的计算机

4、第一位程序员:艾达拜伦,拜伦的女儿,ADA,创造子程序、循环等概念

5、图灵:储存器和指针思想,理论上证明了计算机研制的可行性

6、程序依赖性,即应用程序以来处理器和操作系统,这决定了Intel和微软的统治地位,Java和Java虚拟机的出现以及互联网浏览器的发展,使得各种服务程序对处理器和操作系统的依赖性越来越小,进而打破了Intel和微软的垄断局面,使得各大公司得以发展自己的业务。

1.2计算机分类

1、服务器

2、PC机

3、嵌入式计算机

1.3PC机结构

【CPU】-【内存条】

【CPU】-【北桥芯片】-【显卡】-【显示器】

【南桥芯片】-【硬盘/网卡/鼠标键盘】…

1、处理器

2、存储器

【CPU内核-cache缓存】-【主存】-【硬盘】

光盘,U盘,网络储存等

三星,DRAM和闪存的最大生产公司

3、主板与芯片组

北桥芯片:主要负责显卡和存储器

南桥芯片:负责处理器与较低速度部件间的接口

第2章初识处理器

1、什么是ALU?

ALU,(Arithmetic LogicUnit)算数逻辑单元,是一种硬件结构,如加法器、乘法器堆在一起

2、什么是ISA?

ISA(Instruction SetArchitecture)指令集体系结构,它将软件和硬件解耦,它包括一套指令集和一些寄存器

3、什么叫架构与微架构?

ISA被简称为Architecture(架构),是处理器的一个抽象描述,

而Microarchiteture(微架构)代表ISA在处理器中的实现,也被称为内核。

前者是设计规范,后者是设计实现方法,而物理实现就是描述处理器是怎么实现的,如可以用22nm集成电路工艺实现,也可以用45nm集成电路工艺实现。

微架构包括运算器、控制器和寄存器,如ARM Cortex、NetBurst等

4、处理器包括:内核、储存器、外设与接口

第3章指令集体系结构

1、人类语言-高级语言-汇编语言-机器语言-控制信号

2、C/C++与人类自然语言差得很远,比如实现矩阵运算要三级循环,而matlab只需一行语句,如果需要查找字段,SQL只需SELECT FROM即可,而C要大量的循环和比较。

3、RISC 精简指令集计算机,定长编码。后RISC时代指令书目为几百个,采用简单变长编码形式,效率更高

4、5种指令集:x86、ARM、MIPS、Power、C6000

5、CPU位数问题:

计算机中的位数指的是CPU一次能处理的最大位数。如32位计算机的CPU一次最多能处理32位数据,即4个字节。

6、x86是什么?

X86一种微处理器体系结构的泛称,我们把基于80x86的CPU架构称作x86架构,这是Intel公司在1978年配合第一块16位的CPU(5MHz 8086)而开发的,采用这种指令集的CPU系统被称作x86架构。这种架构有时叫作IA-32(Intel Architecture 英特尔体系结构的32位系统),以区分AMD公司的x86架构,两公司的创始人都出自仙童半导体公司。

7、指令类型:算术逻辑指令、控制指令、数据传输指令

第4章微架构--处理器的内心世界

1、流水线:将几个步骤并行起来执行,只是时间上的错位。

3级流水线:取指IF(InstructionFetch)、译码ID(Instruction Decode)、执行EX(Execute)

5级流水线:取指IF(InstructionFetch)、译码ID(Instruction Decode)、执行EX(Execute)、内存数据读或者写MEM(Memory Access)、数据写回到通用寄存器中WB(Write Back)

2、在早起处理器中,程序和数据存储器没有分开,那么在第4个cycle中MEM和IF都需要访问存储器,这导致其中一个操作要等待,降低效率,这也是现在的处理器将程序存储在L1P Cache中,数据存储在L1D Cache中的原因之一。

3、分支预测:解决流水线中条件语句必须等条件确定再执行的弊端,采用分支预测,处理器猜测进入那个分支,进而进行取指、译码等,猜测正确就能节省时间,猜测错误从头再来。

4、乱序执行:

就是处理器可以先执行后面不依赖前面数据的指令。有关乱序执行首先需要知道指令的相关性问题,它是影响乱序执行的罪魁祸首。想要乱序执行,必须要有一个Buffer来缓存还没执行的指令,然后从这个Buffer中去调度指令的执行顺序。Buffer两大功能:去耦合和抗波动。

指令在乱序执行内核中的处理过程可分为3个步骤:顺序发射、乱序执行、顺序提交。

5、指令并行:

Superscalar:超标量处理器,在处理器内部进行指令并行化,如Intel P4 CPU,加上乱序执行,更擅长复杂的控制

VLIW:在处理器外部进行指令并行化,即由编译器完成,如TI C6000 DSP,更擅长数据的密集计算

6、数据并行:

SIMD,一条语句处理多个数据

MMX指令集:一次处理64位

SSE指令集:一次处理128位,如果图像数据每个像点8bit,那么128bit的SSE指令可以一次处理16个像素。

7、线程并行:多线程,分时复用

硬件多线程:粗粒度AAABBBA,细粒度ABABABA

超线程:Intel的SMT技术,SMT成为同时多线程,即多个线程的指令同时被发射。

8、程序、线程和进程的区别?

应用程序>进程>线程

应用程序(application)是由一个或多个相互协作的进程组成的。

进程(process)是系统进行资源分配和调度的一个独立单位。它在执行过程中拥有独立的内存单元。

线程(thread)是进程中所包含的一个或多个执行单元。它只能归属于一个进程并且只能访问该进程所拥有的资源。

进程和线程的主要差别在于它们是不同的操作系统资源管理方式。打开资源管理器可以看到很多进程在执行。进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,就好比开多个word一个崩溃不影响其他。而线程只是一个进程中的不同执行路径,线程有自己的寄存器、堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,但在进程切换时,耗费资源较大,效率要差一些。

多线程的意义在于并发执行,即多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。这就是进程和线程的重要区别。

9、什么是超标量?与超流水线有什么区别?

超标量是指在一个时钟周期内CPU可以执行一条以上的指令。这是因为现代的CPU越来越多的采用了RISC技术,所以才会超标量的CPU。

超标量是通过内置多条流水线来同时执行多个处理器,其实质是以空间换取时间。而超流水线是通过细化流水、提高主频,使得在一个机器周期内完成一个甚至多个操作,其实质是以时间换取空间。

10、并行总结:

时间并行(流水线)

空间并行(指令并行、数据并行、线程并行)

11、微架构总结

处理器性能公式:程序的执行时间=程序指令数×指令执行的周期数×每周期的时间

提高程序执行效率:减少程序指令数,如SIMD技术;减少指令的执行周期数,如指令集并行技术;减少时钟周期时间,如提高处理器工作频率

商用处理器架构选择:多核+VLIW+SIMD+简单内核

第5章 Cache

1、什么是Cache?

Cache是一个缓存,介于CPU内核和内存之间,在于提高数据读取速度。方法是在处理器内部放置一些SRAM作为Cache。Cache在日常生活中很常见,比如上学背的书包。

2、Cache的层次:单核处理器的Cache分两层,L1P/L1D+L2共用;多核处理器分三层,L2分离,L3共用。

3、Cache一致性:MESI协议,MESIF协议(如Intelcore i7)

4、Cache在搬移数据时CPU闲置,DMA(内存直接存取)克服了这个缺陷

第6章编写高效代码

1、减少指令数:

降低数据精度

减少函数调用(小函数直接写成语句、小函数写成宏、声明内联函数)

空间换时间(比如开辟数组储存临时变量来代替递归算法)

2、减少处理器不擅长的操作:

少用乘法:如a*4改为a<<2

少用除法:如可以先倒数再作乘运算

将浮点数定点化:如CS烟雾弹效果中图像alpha混合

尽量减少分支,并将最可能的分支放在if中(与分支预测相关)

3、优化内存访问:

少用数组和指针:只有简单局部变量会放在寄存器中,数组指针会被放在存储器中

少用全局变量:如经常见到编程习惯inta; int temp=a;将temp在函数中使用

程序访问和数据访问符合Cache的时间性和空间性:最典型的例子是二维数组的访问,如果a[i][j]在Cache中那么a[i][j+1]一定在Cache中,但是a[i+1][j]就不一定了

自己管理内存动态分配:链表结构中,malloc和free函数耗费大量时间还有很多其他缺点,这里可以开辟一块free list空间

4、编译器能做什么?

会计算常量、表达式化简、提取公共语句、数据组织使更易于并行化

5、多线程编程是什么?

线程是处理器执行程序的基本单位,工作首先分成多个线程,进而分配到多个核上运行。需注意负载均衡、同步控制等

6、OpenMP:并行编程架构,转为共享内存系统设计,适用于多核处理器

第7章 SOC

1、应用处理器:CPU核+GPU核+DSP核+Video Engine核

CPU 中央处理器  GPU 图形处理器  DSP 数字信号处理器  Video Engine 硬件加速器

《大话处理器》简要学习笔记相关推荐

  1. Javaweb回炉简要学习笔记

    Javaweb回炉简要学习笔记 1.高难度面试题 ​ 请你谈谈网站是如何进行访问的? 输入一个域名:回车 检查本机的配置文件C:\Windows\System32\drivers\etc\hosts下 ...

  2. 《大话设计模式》学习笔记

    睡醒后就拿起<大话设计模式>这本书来看.之前对于设计模式只是一知半解,看了之后感觉受益匪浅. 在此做个小笔记.也强烈建议像我这样的萌新去看看.(很重要.很重要.很重要...) 前言 首先复 ...

  3. 【大话传送网-学习笔记】IP

    目录 1.IP与MSTP 2.二层交换 2.1 底层直连--物理层 2.2 二层交换--交换机 2.3 二层交换--VLAN 3.三层路由 3.1 IP地址 3.2 子网 3.3 网关 3.4 路由 ...

  4. 【大话传送网-学习笔记】波分复用与OTN

    目录 1.波分复用 1.1 定义 1.2 波分系统 1.3 特点 2.OTN 2.1 定义 2.2 特点 2.3 电交叉 2.4 光交叉 2.5 保护 2.6 OTN设备 1.波分复用 波分网元数量少 ...

  5. jQuery,Ajax.animate,SVG(简要学习笔记二十)[完结篇]

    1.$和jquery在全局命名空间中定义的唯一两个变量. 2.jquery是工厂函数,不是构造函数.他返回一个新创建的对象. 3.jquery的四种调用方式:     <1>传递CSS选择 ...

  6. HTML5权威指南--Web Storage,本地数据库,本地缓存API,Web Sockets API,Geolocation API(简要学习笔记二)...

    1.Web Storage HTML5除了Canvas元素之外,还有一个非常重要的功能那就是客户端本地保存数据的Web Storage功能. 以前都是用cookies保存用户名等简单信息. 但是coo ...

  7. JavaScript权威设计--CSS(简要学习笔记十六)

    1.Document的一些特殊属性 document.lastModified document.URL document.title document.referrer document.domai ...

  8. JavaScript权威设计--事件冒泡,捕获,事件句柄,事件源,事件对象(简要学习笔记十八)...

    1.事件冒泡与事件捕获 2.事件与事件句柄   3.事件委托:利用事件的冒泡技术.子元素的事件最终会冒泡到父元素直到跟节点.事件监听会分析从子元素冒泡上来的事件. 事件委托的好处:     1.每个函 ...

  9. 【大话存储】学习笔记(7章), OSI模型

    任何系统之间,如果需要通信,都需要一套自己的协议系统.这个协议系统一般要定义互相通信的语言,以及硬件. OSI是被提取抽象出来的系统间通信模型,中文意思是"开放式系统互联",是描述 ...

最新文章

  1. volatile - 如何实现线程安全
  2. 号外号外 你和python大牛的差距有多少?
  3. java 数组 反射_java数组的反射
  4. python paramiko包 ssh报错No existing session 解决方法
  5. mysql时间戳和日期转换
  6. Pycharm显示行号,修改字号大小
  7. 前端下载二进制流文件
  8. 初赛问题求解及选择题数学相关整理
  9. java 异常抛出 顺序_java异常抛出时间顺序
  10. python初学者用什么软件_初学者编写python用什么软件
  11. arts-week12
  12. 方舟生存进化服务器Linux,方舟生存进化官方服务器与私人服务器有什么区别
  13. 阿里云云计算 9 弹性裸金属服务器(神龙)
  14. 【NVIDIA】 nvidia-smi查看GPU使用情况
  15. 浅析游戏音效中的虚拟音效
  16. 一款免费、炫酷的GUI:AWTK
  17. 第五人格显示服务器连接失败,第五人格网络连接失败怎么回事
  18. 商用密码企业调研(必做) 20181314
  19. OPA 20 - deliberately generate an error
  20. 用python输出沙漏_2018-2019寒假作业 其一 打印沙漏

热门文章

  1. BZOJ3786 星际探索
  2. Bootstrap实现表格分页
  3. Idea中GsonFormat插件安装
  4. word如何给数学公式编号
  5. 计算机专业怎样才能晋级正高级
  6. 微信小程序--wx-charts图表插件使用教程
  7. PAC原理及其算法实现
  8. 希尔排序(附C语言实现)
  9. python中多重if语句用法_python-循环语句的简单条件语句、多重条件语句和嵌套条件语句编写...
  10. Flink JobManager占用注册端口引起的小问题