关于cpu:CPU基础知识
运算器
运算器(Arithmatic unit ALU)用于做算术计算和逻辑计算。算术计算包含加减乘除
CPU是整个计算机的大脑,管制和解决内部输出的工作。CPU是由运算器、寄存器和控制器三大模块组成。 运算器 运算器(Arithmatic unit ALU)用于做算术计算和逻辑计算。算术计算包含加减乘除四则运算,逻辑运算次要包含异、或、非、与、比拟等运算。 运算器解决的数据通常为二进制数据,古代计算机中运算器一次解决的数据长度通常是64位,一次解决的二进制位长度越大,示意解决性能越高。 寄存器 寄存器是运算器的数据仓库,运算器须要的数据是存储在寄存器中的,当运算器计算实现后将后果再回写到寄存器中,最初返回到输出设备。 寄存器分为 控制器 包含程序计数器、时序发生器、指令译码器、寄存器。 程序计数器 program counter 简称PC,用于记录CPU指令的地址。当CPU执行指令时,须要从PC中获取指令的地址,依据地址再获取到指令。当该条指令执行实现后,PC的地址会指向下一个指令地址位。 时序发生器 用于发送时序脉冲,CPU根据不同的时序脉冲有节奏地进行工作,相似于CPU的节拍器。 指令译码器 翻译指令 寄存器 寄存器又分为多种不同类型 数据寄存器 数据寄存器(Data Register,DR)又称数据缓冲寄存器,其次要性能是作为CPU和主存、外设之间信息传输的中转站,用以补救CPU和主存、外设之间操作速度上的差别。 数据寄存器用来临时寄存由主存储器读出的一条指令或一个数据字;反之,当向主存存入一条指令或一个数据字时,也将它们临时寄存在数据寄存器中。 指令寄存器 存储CPU的指令,PC中的指令地址就是指向的指令寄存器空间。 当执行一条指令时cpu应用,首先把该指令从主存读取到数据寄存器中,而后再传送至指令寄存器。 主存地址寄存器 主存地址寄存器(Address Register,AR),存储着数据的内存地址,CPU通过IO总线和内存替换数据。 因为在主存和CPU之间存在操作速度上的差别,所以必须应用地址寄存器来临时保留主存的地址信息,直到主存的存取操作实现为止。当CPU和主存进行信息替换,即CPU向主存存入数据/指令或者从主存读出数据/指令时,都要应用地址寄存器和数据寄存器。 累加寄存器 累加寄存器通常简称累加器(Accumulator,AC),是一个通用寄存器。当运算器的算术逻辑单元ALU执行算术或逻辑运算时,为ALU提供一个工作区,能够为ALU临时保留一个操作数或运算后果。 程序状态寄存器 程序状态字(Program Status Word,PSW)用来表征以后运算的状态及程序的工作形式。 程序状态字寄存器还用来保留中断和零碎工作状态等信息,以便CPU和零碎及时理解机器运行状态和程序运行状态。因而,程序状态字寄存器是一个保留各种状态条件标记的寄存器。 CPU高速缓存 CPU在拜访内存时,首先从CPU高速缓存中查问数据,如果存在间接获取,否则拜访内存中的数据,并把数据放到CPU缓存中,最初返回给CPU应用。 下图为CPU的缓存架构 如图,CPU缓存分为一级缓存、二级缓存和三级缓存。越凑近CPU存取数据速度越快,其老本也会越高。每个CPU外围独自领有L1和L2缓存,同一颗物理CPU的多个外围共享同一个L3缓存。 CPU在获取数据时,先从L1获取,如果没有再从L2、L3获取,直到从主存中获取数据。当L1中蕴含了所需的数据时,速度是最快的,反之每次都要到主从中获取数据时,就会很慢。 缓存行 CPU和主存替换数据的最小单位是cache line(缓存行),每个缓存行的大小是64字节。思考到空间局部性,邻近的数据将来被拜访的可能性较大,因而当CPU装载主存数据到缓存时,会将邻近的64个字节一起载入到缓存中,这64个字节正好占了一个cache line。当一个缓存行的数据有变动时会清空该缓存行,并从主从中从新载入。 多线程缓存共享问题 多个线程同时操作cache line中的不同字节时,会呈现缓存伪共享状况。每个线程的操作都会导致缓存的生效,进而须要从主从读取,从新载入到CPU缓存中,这样导致缓存频繁的装载、生效,读取的数据理论都要从主存取得,大大降低了CPU的性能。 缓存行对齐 为了防止缓存行的伪共享问题,咱们能够将不同线程操作的数据分布到不同的缓存行中,互不烦扰。A线程批改A数据只须要对A数据缓存行生效,而不会影响到B线程的B数据。 缓存行对齐有两种形式 1、将共享变量数据左右填充有效的数据,保障总长为64个字节 2、在JDK8中应用@Contended注解标注共享变量 (编辑:海南站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |