计算机处理器笔记

chapter 1

1.1 计算机系统结构中的8个伟大思想

  • 面向摩尔定律的设计
    计算机设计者必须预测器设计完成时的工艺水平
  • 使用抽象简化设计
    高层次看不到低层次的细节,只能看到一个简化的模型
  • 加速大概率事件
  • 通过并行提高性能
  • 通过预测提高性能
  • 存储器层次
  • 通过冗余提高可靠性

1.2 谬误

  • 改进计算机的某个方面时期望总性能的提高与改进大小成正比
  • 利用率低的计算机功耗低
  • 面向性能的设计和面向能量效率的设计具有不相关的目标
  • 用性能公式的一个子集去度量性能

chapter 3

3.1 陷阱:

  • addiu用于将常数和有符号数相加,所以对立即数会进行符号扩展
    addiu is used to add constants to signed integers when we don’t care about overfl ow

chapter 5 Memory

5.1 层次化的结构

register file

mux控制
在这里插入图片描述

SRAM

线与
在这里插入图片描述
多级decode

DRAM

功耗更大,访问一次延时长
读操作:预充,激活行,激活列,在MUX中输出
复用IO,不同时间输入的信息不同

  • row buffer:激活行之后,很多数据可以同时读写,减少读memory的时间
    在这里插入图片描述

  • memory bank:提高memory的带宽,而总线的带宽不变
    在这里插入图片描述
    1是指总线延时,15指DRAM读取延时,1指数据写回延时1+15+1=17
    如果是4bank,延时变成1+15+1*4

  • 双通道,对应CPU两个memory控制器
    在这里插入图片描述
    一个chip提供8位,8个chip拼成64位数据
    上图中,一个chip由8个banks组成,1个bank一次给8位数据,不同的chip每次选通相同的bank
    bank密度高,噪声容限低,采用多个结构拼成最后的结构

flash

  • nand:密度高,更便宜,做U盘,不能随机读写
  • nor:更快,允许random access,在手机中做instruction memory
    有擦写次数限制,不能做直接RAM
    更低的尺寸做不了,但是可以做3Dflash

disk

便宜,有机械结构,容易摔坏

5.2 cache

一次存取以block为单位

direct mapped cache

memory地址取余数,对应cache相应的位置,多对一
多对一的话如何确定在memory的数据呢?把高位地址信息保存起来;同时还要知道cache相应位置有没有数据存
在这里插入图片描述1024个位置,需要10bit作为index
一个block4byte,最低位2bit为offset
高位地址作为tag
block size更大的话:
block数目更少,容易冲突,miss的代价更大,因为一次读取的数据更多
block size更小的话:
读取的次数多

CPU读数据

一旦miss,就stall,干等着
cache中的tag和data可以并行读

CPU写数据:更麻烦

tag checking和写数据不能同时
sw一次写一byte或者word,只是block中的数据的一部分

  • write through:cache更新之后memory也跟着更新
    miss的时候可以fetch the block,也可以don’t fetch the block
  • write buffer:write buffer负责往DRAM写数据,节省CPU的时间
    write buffer是个队列,只有队列满了之后CPU才会stall
    缺点:改写memory的次数太多了
  • write-back:cache中的数据被更新了,标记为dirty data,当被replace的时候才更新memory中的数据,更新memory也可以用write buffer
    miss的时候多数是fetch the block,从memory中取数据在cache中被改写

associative cache

direct mapped cache的问题是利用率不高
折中的办法就是分组,组内很灵活先来先得,组之间根据地址计算
repalace的时候满足一定的规则
在这里插入图片描述
缺点:硬件资源多,比较的延时增加,所以一般也就不会超过8路
好吃:cache利用率高,所以hit可能性高
提高associativity可以降低miss rate,最极端就是全相联fully associated,先来先得

replacement policy

  • Least-recently used(LRU)没有被经常使用的数据会被替换
    但是需要记录时间频率,代价很高,只能在路数少的时候
    硬件上用伪LRU
  • random:简单,随便选,路数多的时候

miss的种类

  • compulsory miss:第一次读取的数据
  • capacity miss:容量太小
  • conflict miss:无用功,总是冲突
  • 多核:一致性缺失

Measuring Cache Performance(计算)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

mutilevel caches

在这里插入图片描述
在这里插入图片描述
L1:减少hit time,size小
L2:size大,减小miss rate
L1,L2为核私有
L3:为核共享

advanced CPU

  • out of order CPU
  • dataflow pattern
  • multi-banked caches to support multiple issue
    AVX:对于64bit的机器,如果一个数据位宽是8bit,可以一次计算8个数据

5.3 虚拟内存

为什么使用虚拟内存?

  • memeory不够用,process可能比物理内存还大
  • 更安全,更高效
  • 可以实现reallocation
    由MMU hardware和操作系统实现
  • page:VM基本单位
  • page table:虚拟内存到物理内存的对应,储存在内存
    在这里插入图片描述
  • page fault:page不在内存中:
    page fault handler来处理
    use faulting virtual address to find PTE->locate page on disk->choose page to replace->read page into memory and update page table->run process
  • replacement and writes:
    write back: 通过dirty bit确定是否有改变

Translation look-aside buffer(TLB):快表

page table在memory,从虚拟内存到物理内存的转化需要访问一次memory,然后读取数据还要读一次memory,TLB就是为了减少访问memory次数
TLB用专门的硬件实现,和cache并行,读取速度很快,0.5-1 cycle for hit,

  • fully associative often,
  • write-back often
  • TLB miss
    if page is in memory: load the PTE from memory and retry: 软硬都能实现
    TLB handle程序:在地址Ox8000_0000
    if page is in disk: page fault : OS handle
    在这里插入图片描述
    如果entry is invaild,即page在disk中, page fault handler in invoked
  • TLB and cache interaction
    可以用虚拟地址直接去cache找数据,这样cache访问和TLB访问可以并行,但是不同进程的虚拟地址可能相同,这样在cache中的数据会不匹配
    virtually indexed, physically tagged cache(VIPT):用TLB得到的物理地址与cache中取出的数据的物理地址进行匹配
    在这里插入图片描述

memory protection

  • page table 受OS控制
  • TLB:增加控制位
    在这里插入图片描述
  • 指令分成普通指令和privileged instruction,privileged instruction只能kernel使用
  • system call exception: 从user mode 到supervisor mode
  • protection on context switch:
    with TLB:增加PID,某一进程不能访问其他进程在TLB中的数据,这样进程再切换过来之后数据也不会被清洗掉
    cache也可以用同样的方式,避免数据相互篡改

5.4 virtual machine

  • improve isolation
  • avoid security and reliability problem
    virtual machine monitor(hypervisor): map virtual resources to physical resources

5.5 多核处理器

cache coherence problem:多核处理器的数据共享问题,可能一个处理器在私有cache中更改数据,但是共享的memory中数据还没改

解决方法:

  • snooping protocol(invalidation-based):一个处理器更改了某一个数据,会告诉别的CPU,别的处理器把他自己的数据作废,下一代读写的时候重新读最新的数据,相当于数据都挂在bus上
    很麻烦:这样cache必须为CPU和bus同时服务,不同的CPU之间可能会死锁和竞争
  • directory-based protocol:承接snooping protocol,记录哪些处理器中有哪些数据,减少bus的瓶颈

consistency problem

memory coherence解决能不能返回正确的数据,一个处理器改了数据,另一个处理器更没更新
memory consistency解决多次写操作的顺序问题,
并行执行,很多指令打乱执行,可能会导致错误的结果
解决方法:

  • sequential consistency:性能差
  • relaxed:不同程度的实现read和write乱序

6 并行处理器

single chip, multicore
multiple chips, multicore
scalaility: 可扩展性

  • multiprocessor:
  • multicomputer:特定的协议,局部带宽会比较大
  • cluster:集群,可能电脑分散在各种地方,用过网络相联
  • warehouse-scale computers:tens of thousands of serers
    困难
  • partition:data/work分配
  • coordination:控制上的同步
  • communication:数据的交互
    Amdahl’s law:
    在这里插入图片描述
    多核计算加速比的过程中,分成强、弱scaling,且默认load balance
  • 强scaling:问题规模不变
  • 弱scaling:问题规模也增大

6.1 instruction and data stream

软件有顺序和并发
硬件有串行和并行
在这里插入图片描述

  • 之前讲的都是SISD
  • SIMD:同样的指令,实现数据的并行
    vector processor:按向量的方式工作,addv, mulv
    好处是:很容易并行编程,简化了同步,稠密矩阵读数据也方便
    MIMD: mutiple instruction mutiple data

6.2 GPU

在这里插入图片描述
在这里插入图片描述
GPGPU: General Purpose Computing on GPU
Programming language/API: DirectX, OpencGL
Compute Unified Device Architecture: CUDA/OpenCL
在这里插入图片描述
上图有L1, L2 cache,L2 cache与DRAM相连
SIMD的模式,GPU中有很多register,可能比CPU的cache都多,用硬件实现context switch
warp: group of 32 thread
在这里插入图片描述
GPU的memory叫GDDR

6.3 multithreading

  • fine-grain multithreading: 细粒度
    每个周期都会切换线程
    If one thread stalls, others are executed
    缺点:单个进程延时增加
  • coarse-grain multithreading:粗粒度Only switch on long stall
    缺点:切换时有start-up cost
  • simultaneous multithreading:硬件利用率最高

6.4 SMP: shared memory multiprocessor

  • UMA: uniform
    在这里插入图片描述
  • NUMA: nonuniform,访问memory都是共享的,但是本地memory更快
    在这里插入图片描述
    对于sum reduction要注意:
  • 每一步都要同步
  • 非2n的情况
    在这里插入图片描述
    当两个处理器共享一个memory时,类似于生产者消费者模型,涉及到data race
    需要原子操作,通过lock锁来控制临界区

为了提高对总线利用率的效率:ll sc
在这里插入图片描述
在这里插入图片描述
message passuing: processor之间来发送接收message

6.5 warehouse-scale computer(WSC)

要考虑:可扩展性、用电、网络
RAID: redundant arrays of inexpensive disk
Improves performance and dependability
RAID5: 分布式的奇偶校验盘
RAID6: recovery from a second failure
https://blog.csdn.net/chenvast/article/details/77906712

1. 处理器的基本结构 处理器计算机中最重要的组成部分之一,它负责执行指令、存储和处理数据。处理器的基本结构包括运算器、控制器、寄存器、存储器和总线。 - 运算器:负责执行算术和逻辑运算,包括加法、减法、乘法、除法、与、或、非等操作。 - 控制器:负责管理指令的执行顺序和处理器的操作模式,包括指令译码、指令执行、分支控制、中断处理等。 - 寄存器:处理器内部的一种高速存储器,用于暂时存储指令和数据。常见的寄存器包括累加器、程序计数器、指令寄存器等。 - 存储器:计算机用于存储程序和数据的设备,包括内存、硬盘、U盘等。 - 总线:计算机内部各个组成部分之间传输数据和指令的通道,包括地址总线、数据总线和控制总线。 2. 处理器的指令集和编程模型 处理器的指令集是处理器能够执行的操作的集合,包括算术操作、逻辑操作、传输操作等。不同的处理器有不同的指令集,例如x86指令集、ARM指令集等。 编程模型是指程序员在编写程序时所使用的抽象模型,它描述了程序员如何使用处理器的指令集来编写程序。常见的编程模型包括传统的CISC模型和现代的RISC模型。 3. 处理器的性能指标 处理器的性能指标包括时钟频率、IPC、吞吐量和延迟等。 - 时钟频率:处理器内部时钟的运行频率,通常以GHz为单位。 - IPC(Instructions Per Cycle):每个时钟周期内处理器执行的指令数量。 - 吞吐量:单位时间内处理器能够执行的指令数量。 - 延迟:指令从发出到执行完成所需要的时间。 4. 处理器的发展历程 处理器的发展历程经历了从单核心到多核心的演变,以及从CISC模型到RISC模型的转变。 - 单核心处理器:早期的计算机使用单核心处理器处理器的性能主要依赖于时钟频率的提升。 - 多核心处理器:随着计算机应用的发展,多核心处理器逐渐被引入计算机中,可以同时执行多个任务,提高了计算机的并行处理能力。 - RISC模型:在处理器的指令集设计上,RISC模型强调简洁、规范的指令集,使得处理器的设计更加高效,提高了处理器的性能。 5. 处理器的未来发展方向 处理器的未来发展主要集中在以下几个方向: - 集成度的提高:将更多的处理器核心、缓存、内存控制器等集成到处理器中,提高处理器的性能。 - 异构计算:在处理器中引入异构计算单元,例如GPU、FPGA等,提高处理器的计算能力。 - 量子计算:引入量子计算的技术,实现更高效的计算处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值