CPU与内存

CPU与内存

CPU(Central Processing Unit)是一块超大规模的集成电路板,是计算机的核心部件,承载着计算机的主要运算和控制功能,是计算机指令的最终解释模块和执行模块。硬件包括基板、核心、针脚,基板用来固定核心和针脚,针脚通过基板上的基座连接电路信号,CPU核心的工艺极度精密,达到10纳米级别。

和其他硬件设备相比,在实际代码的运行环境中,CPU与内存是密切相关的两个硬件设备。开发工程师在实际编程中,对这两个部件有一定的掌控性,熟悉CPU和内存的脾气,让他们以自己期望的方式执行相关指令。在CPU的世界里,没有缤纷多彩的图像、悦耳动听的音乐,只有日复一日地对0与1电流信号的处理。但CPU内部的处理机制是十分精密而复杂的,总的来说,就是有控制器和运算器组成的,内部寄存器使这两者协同更加高效。CPU的内部结构图1-8所示。

 1. 控制器

控制器由图1 - 8中所示的控制单元。指令译码器、指令寄存器组成。其中控制单元是CPU的大脑,由时序控制和指令控制等组成;指令译码器是控制单元的协调下完成指令读取、分析并交由运算器执行操作;指令寄存器使存储指令集、当前流行的指令集包括X86、SSE、MMX等。控制器有点像一个编程语言的编译器,输入0与1的源码流,通过译码和控制单元对存储设备的数据进行读取,运算完成后,保存回寄存器,甚至是内存。

2.运算器

运算器的核心是算术逻辑运算单元,即ALU,能够执行算术运算或逻辑运算等各种命令,运算单元会从寄存器中提取或存储数据。相对控制单元来说,运算器是受控的执行部件。任何编程语言诸如a+b的算术运算,无论字节码指令,还是汇编指令,最后一定会以0与1的组合流方式在部件内完成最终计算,并保存到寄存器,最后送出CPU。平时理解的栈与堆,在CPU眼里都是内存。

3.寄存器

最著名的寄存器是CPU的高速缓存L1、L2,缓存容量是在组装计算机时必问的两个CPU性能问题之一。缓存结构和大小对CPU的运行速度影响很大,毕竟CPU的运行速度远大于内存的读写速度,更远大于硬盘。基于执行指令和热点数据的时间局部性和空间局部性,CPU缓存部分指令和数据,以提升性能。但由于CPU内部空间狭小结构复杂,高速缓存远小于内存空间。

CPU是一个高内聚的模块化组件,它对外部其他硬件设备的时序协调、指令控制、存取动作,都需要通过操作系统进行统一管理和协调。所谓的CPU时间片切分,并非CPU内部能够控制与管理。CPU部件是一个任劳任怨的好公民代表,只要有指令就会马不停蹄地执行你,高级语言提供的多线程技术和并发更多地依赖于操作系统的调配,并行更多依赖于CPU多核技术。多核CPU即在同一块基板上封装了多个Core。还有一种提升CPU性能的方式是超多线程,即在一个Core上执行多个线程。

内存是系统资源的代名词,它是其他硬件设备与CPU沟通的桥梁,计算机中的所有程序都在内存中运行,它的容量与性能如果存在瓶颈,即使CPU再快,也是没用的。内存物理结构由内存芯片、电路板、控制芯片、相关支持模块等组成,内存芯片结构比较简单,核心是存储单元,支持模块是地址译码器和读写控制器,如图1-10所示。

从图 1-10 中可以看出,越往CPU靠近,存储越贵,速度越快。越往下,存储越便宜,速度越慢,当然容量也会更大。云端存储使得应用程序无须关心是分布式还是集中式,数据如何备份和容灾。在本地磁盘与CPU内部的缓存之间,内存是一个非常关键的角色,但它很敏感,内存颗粒如果有问题无法存储,或控制模块出现地址解析问题,或内存空间被沾满,都会导致无法正常地执行其他应用程序,甚至是操作系统程序。程序员们最害怕的OOM通常来源于由于不恰当的编码方式而导致内存资源耗尽,虽然现代内存的容量今非昔比,但仍然是可以在秒级内耗尽所有内存资源的。

图 1-10 中的存储单元都有一个十六进制的编号,在32位机器上0x开始的8位数字编号就是内存存储地址,相当于门牌号。以C和C++为代表的编程语言可以直接操作内存地址,进行分配和释放。而以Java为代表的的编程语言,内存就交给JVM进行自动分配与释放,这个过程称为垃圾回收机制。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值