CPU中含有多种指令集,指令集对于CPU运算具有指导和优化的硬程序,用来引导CPU进行加减运算和控制计算机操作系统的一系列指令的集合
常见的就有微指令集RISC和复杂指令集CISC
RISC:包括ARM架构和PPC架构
CISC:包括intel架构和AMD架构等的x86架构
常见的cpu主要是x86架构,其中又分为8位、16位、32位,表示cpu一次能够读写的数据位数,现在已经升级到了64位。
Q:在现在的cpu中的微指令集中包含哪些有关于多媒体、虚拟化、省电功能相关的微指令集:
多媒体微指令集:SSE、SSE2、MMX、SSE3、SSE4、AMD-3DNow!
虚拟化微指令集:intel-VT AMD-SVM
省电功能:intel-SpeedStep,AMD-PowerNow
硬盘是一直存放回忆的地方供以后调用
内存是存放暂时处理的数据的地方
主板:神经系统连接所有的原件
计算单位 后面计算时会用到:
1.容量单位:M、k、byte、bit
500GB = 500 * 1000 * 1000 * 1000Byte
2.速度单位:HZ MHZ GHZ
1.早期的芯片使用两个桥接器来控制各个元件的沟通:
北桥:链接速度较快,上面挂载着cpu、内存、gpu
南桥:速度较慢,上面挂载着硬盘、USB、网卡等
2.现在主流的芯片都会把CPU和内存直接封装在一起,
PCle 主要是负责cpu与gpu和存储设备的通信
而cpu与内存之间的通信主要是在System Agent中集成了(使用的是IMC),所以去除了北桥的存在
cpu的工作频率:= 外频 × 倍频
外频:主要是cpu与外界元件进行数据传输时的速度
倍频:倍频则是 CPU 内部用来加速工作性能的一个倍数
CPU中的内存控制芯片------FSB前端总线速度------内存
每次频率能够传输的数据量为64位,则64就为传输的宽度
CPU可以从内存中取得的最长的带宽为:频率速度 (MHZ) × 传输的宽度(Bytes)
CPU每次能够处理的数据量成为字组大小WordSize
个人电脑的内存主要为 DRAM(dynamic random access memory)
主要是在通电的情况下使用,断电时数据就会消失,因此我们称这种RAM为挥发性内存
SDRAM/DDR | 型号 | 数据宽度(bit) | 内部频率(MHz) | 频率速度 | 带宽(频率x宽度) |
---|---|---|---|---|---|
SDRAM | PC100 | 64 | 100 | 100 | 800MBytes/sec |
SDRAM | PC133 | 64 | 133 | 133 | 1064MBytes/sec |
DDR | DDR-266 | 64 | 133 | 266 | 2.1GBytes/sec |
DDR | DDR-400 | 64 | 200 | 400 | 3.2GBytes/sec |
DDR | DDR2-800 | 64 | 200 | 800 | 6.4GBytes/sec |
DDR | DDR3-1600 | 64 | 200 | 1600 | 12.8GBytes/sec |
DDR3L 为了节省更多的电力,新的制程中降低了内存的操作电压,因此 DDR3 标准电压为 1.5V,但 DDR3L 则仅须 1.35V 喔!
一般内存的数据宽度为64位,如果将两个内存加以合并就会有128bit的数据宽度,这就是双通道设计
内存与cpu之间的数据传输还需要通过cpu中的内存控制器,也就是说数据必须通过:
内存------CPU内存控制器-----CPU
如果有些数据是我们经常所要用到的,一次一次通过内存取用很麻烦,则我们设计了一个暂时存储器,称为L2高速存缓器,不用再去内存中取用数据。
由于L2高速存缓器必须结合在CPU中,所以它的频率必须与CPU一样,DRAM无法达到高速的效果,则我们采用SRAM(static random access memory)静态随机存储器。
由于CPU要驱动不同的功能模块需要不同的电压等参数,那么是如何去根据不同的模块去选择适合的频率呢:
每个模块的各项参数包括系统时间、设备的IO地址、IRQ、CPU的电压频率被记录在一块称为CMOS的芯片上,这块芯片是由外接电源来进行供电,那么CMOS是如何更新和读取数据呢
BIOS(basic input output system)这一套程序被写入主板的一块内存芯片ROM之中,,每次开机启动时都是优先启动BIOS:
1.在开机时BIOS可以使用CMOS中的参数
2.也可以在开机后按Delete键或小键盘上的Del键就可以进入CMOS设置界面
ROM是只读的,若我们要更新系统时无法修改ROM的值,所以现在BIOS一般写在Flash中
显卡与主机CPU和内存的通信也是通过显卡上的cpu控制进行,由于显卡需要处理音频和图像,需要数据传输的速度很快,显卡和主板经历了几代传输接口:PCI----AGP----PCIe
规格 | 宽度 | 速度 | 带宽 |
---|---|---|---|
PCI | 32 bits | 33 MHz | 133 MBytes/s |
PCI 2.2 | 64 bits | 66 MHz | 533 MBytes/s |
PCI-X | 64 bits | 133 MHz | 1064 MBytes/s |
AGP 4x | 32 bits | 66x4 MHz | 1066 MBytes/s |
AGP 8x | 32 bits | 66x8 MHz | 2133 MBytes/s |
PCIe 1.0 x1 | 无 | 无 | 250 MBytes/s |
PCIe 1.0 x8 | 无 | 无 | 2 GBytes/s |
PCIe 1.0 x16 | 无 | 无 | 4 GBytes/s |
例题:假设你的桌面使用1024x768分辨率,且使用全彩(每个像素占用3Bytes的容量),请问你的显卡至少需要多少内存才能使用这样的彩度?
像素个数:1024 × 768 = 786432个
每个像素占用3Bytes
内存大小:786432 × 3 = 2.35MBytes
除了显卡与主板接口,显卡也需要与显示器进行来连接,常用采用的接口格式为:HDMI
盘片上的数据
扇区:如图所示的每一个小块为一个小扇区
磁道:同一个半径的扇区绕一圈共同组成一个磁道
柱面:加上Z轴,同一个半径的磁道共同组成的一个柱面
硬盘通常分为:传统磁盘、外接式磁盘、SSD固态硬盘
与主板之间采用SATA、SAS接口
版本 | 带宽 (Gbit/s) | 速度 (MByte/s) |
---|---|---|
SATA 1.0 | 1.5 | 150 |
SATA 2.0 | 3 | 300 |
SATA 3.0 | 6 | 600 |
版本 | 带宽 (Gbit/s) | 速度 (MByte/s) |
---|---|---|
SAS 1 | 3 | 300 |
SAS 2 | 6 | 600 |
SAS 3 | 12 | 1200 |
虽然传统磁盘理论上能够达到600MByte/s的速度,但是在实际物理层面只能达到200~300的速度
例如USB接口
版本 | 带宽 (Mbit/s) | 速度 (MByte/s) |
---|---|---|
USB 1.0 | 12 | 1.5 |
USB 2.0 | 480 | 60 |
USB 3.0 | 5G | 500 |
USB 3.1 | 10G | 1000 |
普通的硬盘因为有扇片的存在,以及有马达和磁头的存在。当我们在搜寻某个数据时,数据比较分散,读写的速度明显不快,搜查的效率不高,所以我们采用一种新式的硬盘叫做SSD,没有扇片和磁头的存在,都是内存。
没有马达不需要转动,而是采用内存直接读写的特性
与主板的接口仍然采用SATA或者SAS接口
主板芯片上的IO口的数量是固定的,不同的模块可能公用同一组IO口,那如何区分是哪一个模块呢
我们采用地址address加中断IRQ的方式,不同的模块有着不同的地址,地址的作用就像门牌号一样,当完成任务之后会通过中断IRQ的方式通知CPU现在运行的是哪个模块以及结果是什么,以便CPU区分和进行接下来的操作
在计算机中数字的编码方式一般是公认的二进制、八进制、十进制、十六进制,而计算机只识别2进制数
而文字的编码方式则需要使用ASCII码对照表,将文字内容转变为数字内容供计算机识别和使用
我们需要将程序语言通过编译器转换成机器语言从而驱动机器使用
而不同的机器又需要不同的程序语言去驱动,当我们将数据放入内存中,我们需要经历四步:
1.计算内存大小
2.取得内存
3.获取内存的地址
4.将数据放入
这样做太繁杂了,为了防止重复撰写代码,我们采用操作系统去整体控制硬件
如图,由硬件通过操作系统控制,操作系统去提供接口给我们使用,我们只需要在系统调用层方面关注操作系统接口提供给我们的函数即可,无需再关注其他的。
操作系统提供的功能:让CPU进行算数运算和逻辑判断、内存数据的读取、网卡数据的传输等等
至于不同的硬件有着不同的操作系统,
硬件的厂商将会针对特定的操作系统,让操作系统能够驱动该硬件,
于是操作系统开发者就会提供硬件开发商接口供硬件的厂商使用。
撰写不易,留下您的关注和点赞,我们一起进步!