level 2
一 漫游
我们身处的电子世界,是简历在处理器基础上的。
可以买到一大堆处理器IP核,如ARM核、MIPS核、PowerPC核、Xtenas核等,网上还有开源的处理器核,用这些处理器IP核
计算机的性能主要来源于CPU、内存和显卡的性能
近几年,处理器中的晶体管密度有了很大的提升,以至于完全可以将芯片组的功能集成到处理器内部,这样主板的面积就减小了,计算机更小型化,封装成本也降低了。
显卡的基本功能是将CPU送来的图像数据处理成显示器认识的格式,再送到显示器形成图像,除了基本的转换功能外,现在的显卡还有两大功能:一是图像绘制,二是视屏解码
显卡内有一个处理器,叫GPU(Graphic Processing Unit)
2015年04月22日 07点04分
1
level 2
二 初识处理器
1 处理器分层
指令集体系结构(Architecture) ISA
处理器微架构(Microarchitecture) 通常等同于内核(core),简称架构
处理器物理实现
编译器将高级语言转换成处理器能理解的二进制代码,即处理器的能力要靠编译器才能体现出来
软件的兼容分为二进制兼容和源代码兼容
二进制兼容 PC上的应用程序在每一代处理器行都可以正常运行
源代码兼容 可以切换平台(手机)
处理器不是孤立的,它需要操作系统的支持、开发工具的支持、应用软件的支持、程序员的支持
2015年04月22日 07点04分
2
level 2
三 指令集体系结构
处理器公司对外发布的指令集手册,就是使用汇编语言来进行描述
机器字长表示处理器一次处理数据的长度,主要由运算器、寄存器决定
指令集是处理器的脸面,就如同容貌对人的重要性一样,好的指令集应具备如下特征
兼容性
易实现 指令所完成的功能,在处理器硬件上要容易实现
易编程
高性能
2015年04月22日 07点04分
3
level 2
如果发射单元一次发射多条指令,那么就能有更多指令并行处理,因此指令并行处理也称为multi-issue
Superscalar 指令并行化在处理器内部实现
VLIW 在处理器外部实现
奔4处理器微架构分为4大部分
存储子系统 片内cache
前端 准备指令
乱序控制 调度是乱序执行的核心
执行单元
硬件多线程
粗粒度
细粒度
2015年04月22日 07点04分
5
level 2
多个核会共用处理器的外设与接口,如内存控制器、PCI-E接口等,通常也会共享一段cache
通过微架构的改进提高程序执行的效率
1 减少程序的指令数
2 减少指令的执行周期数
3 减少时钟周期时间
4 增加同时执行的线程数
2015年04月22日 07点04分
6
level 2
五 cache
衡量内存速度的标准:
延时
吞吐量
在多核处理器中,一般每个内核独享自己的L1和L2,所有的内核会共用一个大容量的L3
当cache命中时,内核直接从cache中取数据,时间通常是机构cycle,当cache未命中时,数据需要从内存中导入,时间通常是几十、几百个cycle
内存和cache交换数据的最小单位是一个cache line
2015年04月22日 07点04分
7
level 2
在X86处理器中,处理器内部的存储器全部作为cache使用,不纳入存储空间的编址,cache对程序员是透明的,cache完全由处理器硬件来管理,程序员不需要关心cache
而在DSP等性能要求很高的嵌入式处理器中,处理器内部的存储器一部分作为cache,另一部分作为可寻址存储器,程序员可以直接访问这部分内存。因为cache miss是不可避免的,当发生cache miss时,处理器要花大量时间等待数据,而可寻址存储器可以由程序员自己管理,也就是可以有效控制数据miss
2015年04月22日 07点04分
8
level 2
导致cache miss的原因
Compulsory miss 第一次访问数据或程序时
Capacity miss Cache已满
Conflict miss 地址对应的cache line 已被占用
如果处理器内部有可寻址存储器,就可以通过软件控制DMA(Direct memory Access)将以后需要的数据提前搬到处理器内部
2015年04月22日 07点04分
9
level 2
减少处理器不擅长的操作(单周期指令是处理器最喜欢的,执行时间短,流水执行 少用乘法 定点乘法在DSP中需要两个cycle,而移位操作只需要一个cycle
少用除法、求余 处理器没有相应的指令,是通过软件实现的
在精度允许的情况下,将浮点数定点化 Alpha混合
尽量减少分支 现在的处理器都是流水线结构,if和switch等语句会带来跳转,跳转会打乱流水线的正常执行
将最可能进入的分支放在if中,而不是else中 Intel处理器有分支预测单元,第一次进入分支,是否跳转取决于static predictor
优化内存访问(尽量避免cache miss) 少使用数组,少使用指针多用简单局部变量 大块数据会放在存储器中,简单局部变量才会放在寄存器中,
少用全局变量
一次多访问一些数据
数据对齐访问
2015年04月22日 07点04分
11
level 2
大数据结构时的cache line 对齐
程序、数据访问符合cache的时间、空间局部性 二维数组
多核编程时,避免false sharing 尽量少共享数据尽量少修改数据尽量少聘夫修改数据
自己管理内存动态分配 1 malloc、free函数会耗费大量执行时间2 会产生内存碎片,浪费内存空间3 有可能导致内存泄露,分配的内存忘记释放4 空间比较分散,增大cache miss可能性 在嵌入式这种时间和空间都非常紧张的环境下,使用这种方法很可能无法满足性能的要求,这时需要自己实现动态内存的管理:一次性开辟一大块空间,两个链表,一个use list,一个free list
隐藏数据搬移时间
充分利用编译器进行优化 了解编译器的结构 前端分析高级语言代码文本,生存中间代码,后端对中间代码做通用优化和针对处理器的优化,生存在处理器上执行的目标代码
分级管理 -O0:不优化或很小的优化编译优化常常带来程序空间的增加(如自动做函数inline),对于嵌入式系统,存储空间有限,不能做过度优化
编译器会计算常量
2015年04月22日 07点04分
12
level 2
简单的表达式简化
提取公共语句
循环展开、流水作业 二八定律,百分之20%代码占据80%时间,这20%是循环代码#pragma MUST_ITERATE()
自动向量化 restrict关键字
高效的数据组织
指令并行化
编译器更懂处理器
利用多核 并行计算长期来都是在服务器软件中应用 1 分工任务划分数据划分数据流划分2 Amdahl’s Law3 多线程编程
OpenMP并行编程,程序员需要划分线程、分析线程间的数据关系、管理他们的同步、控制他们的负载均衡等
2015年04月22日 07点04分
13
level 2
七 SOC
IP(intellectual property)指的是无形资产,如专利、版权等,在半导体领域,IP指的是一块独立的逻辑或电路设计,如处理器核、存储器核等
半导体行业和通信行业一直是紧密相连的,事实上,半导体是IT、通信、嵌入式等行业的基石
SOC最早来源于嵌入式系统,手机、平板电脑等产品中有一个重要的芯片,叫应用处理器,其作用类似于PC中的 处理器 + 显卡 + 南北桥
应用处理器:
CPU DSP
GPU Video engine
2015年04月22日 07点04分
14
level 2
八 芯
人类史怎样管理复杂事物的 :
1 抽象
2 分层
3 标准化
4 模块化
如果有面试官问某东西的设计流程,第一个步骤回答“系统设计”准不会出错
2015年04月22日 07点04分
15