《大话处理器》简要学习笔记
这本书介绍了处理器的方方面面,是初学者必读书之一
第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 硬件加速器
《大话处理器》简要学习笔记相关推荐
- Javaweb回炉简要学习笔记
Javaweb回炉简要学习笔记 1.高难度面试题 请你谈谈网站是如何进行访问的? 输入一个域名:回车 检查本机的配置文件C:\Windows\System32\drivers\etc\hosts下 ...
- 《大话设计模式》学习笔记
睡醒后就拿起<大话设计模式>这本书来看.之前对于设计模式只是一知半解,看了之后感觉受益匪浅. 在此做个小笔记.也强烈建议像我这样的萌新去看看.(很重要.很重要.很重要...) 前言 首先复 ...
- 【大话传送网-学习笔记】IP
目录 1.IP与MSTP 2.二层交换 2.1 底层直连--物理层 2.2 二层交换--交换机 2.3 二层交换--VLAN 3.三层路由 3.1 IP地址 3.2 子网 3.3 网关 3.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.波分复用 波分网元数量少 ...
- jQuery,Ajax.animate,SVG(简要学习笔记二十)[完结篇]
1.$和jquery在全局命名空间中定义的唯一两个变量. 2.jquery是工厂函数,不是构造函数.他返回一个新创建的对象. 3.jquery的四种调用方式: <1>传递CSS选择 ...
- HTML5权威指南--Web Storage,本地数据库,本地缓存API,Web Sockets API,Geolocation API(简要学习笔记二)...
1.Web Storage HTML5除了Canvas元素之外,还有一个非常重要的功能那就是客户端本地保存数据的Web Storage功能. 以前都是用cookies保存用户名等简单信息. 但是coo ...
- JavaScript权威设计--CSS(简要学习笔记十六)
1.Document的一些特殊属性 document.lastModified document.URL document.title document.referrer document.domai ...
- JavaScript权威设计--事件冒泡,捕获,事件句柄,事件源,事件对象(简要学习笔记十八)...
1.事件冒泡与事件捕获 2.事件与事件句柄 3.事件委托:利用事件的冒泡技术.子元素的事件最终会冒泡到父元素直到跟节点.事件监听会分析从子元素冒泡上来的事件. 事件委托的好处: 1.每个函 ...
- 【大话存储】学习笔记(7章), OSI模型
任何系统之间,如果需要通信,都需要一套自己的协议系统.这个协议系统一般要定义互相通信的语言,以及硬件. OSI是被提取抽象出来的系统间通信模型,中文意思是"开放式系统互联",是描述 ...
最新文章
- volatile - 如何实现线程安全
- 号外号外 你和python大牛的差距有多少?
- java 数组 反射_java数组的反射
- python paramiko包 ssh报错No existing session 解决方法
- mysql时间戳和日期转换
- Pycharm显示行号,修改字号大小
- 前端下载二进制流文件
- 初赛问题求解及选择题数学相关整理
- java 异常抛出 顺序_java异常抛出时间顺序
- python初学者用什么软件_初学者编写python用什么软件
- arts-week12
- 方舟生存进化服务器Linux,方舟生存进化官方服务器与私人服务器有什么区别
- 阿里云云计算 9 弹性裸金属服务器(神龙)
- 【NVIDIA】 nvidia-smi查看GPU使用情况
- 浅析游戏音效中的虚拟音效
- 一款免费、炫酷的GUI:AWTK
- 第五人格显示服务器连接失败,第五人格网络连接失败怎么回事
- 商用密码企业调研(必做) 20181314
- OPA 20 - deliberately generate an error
- 用python输出沙漏_2018-2019寒假作业 其一 打印沙漏