硬件

未来有无可能,普通人在家里(或者车库里)就能造出芯片?3D打印能打芯片吗?

chip_concept

ISA: Instruction Set Architecture, which is the interface between hardware and software(the split line between programming and executing),外部接口。

微架构microarchitecture,这个词表达的是处理器内部的不同架构,即内部实现。

CPI: average Clock cycles Per Instruction,平均值,每段program的CPI均不同,即便是相同的ISA,不同的microarchitecture下,这个值也很可能不同。(每条instruction的执行所需要的cycle数不同,功能越复杂的instruction,一般就需要更多的cycles。对于某一条instruction的实现,拉长cycle时长可以减少cycle数,而提高频率则会增加cycle数)

IPC: Instruction Per Clock/Cycle,CPI的倒数。CPU进入superscalar时代后,人们就逐渐开始用IPC来代替CPI,它能直接表达平均每个cycle执行的指令数。

Superscalar Microarchitecture,简单理解,是实现了Dynamic Multiple Issue功能,IPC > 1的ISA实现,Scalar用来与Vector区别。(有一种Vector架构的CPU,操作数是vector,比如RVV(RISC-V Vector Extension))

[G|M]FLOPS: Float point Operation Per Second

多核CPU是轻量级的SMP(Symmetric Multi-Processing)方案,物理上多个Core被封装成一个CPU内,可并行运行多个线程/进程。对程序员来说,它们之间的区别很小,逻辑上它们完全相同,只是在缓存共享等方面有细微的差异。得益于Hyper Threading超线程技术,每个物理Core又可当成两个逻辑Core来使用。

CPU读取数据时,会先访问Cache,只有当在Cache中找不到数据时,才会去访问内存,先把内存中的数据读入到Cache,然后CPU再从Cache读取。这种访问机制,跟我们使用内存作为硬盘的缓存的逻辑是一样的,用的都是Cache这个词,内存的Cache。(也有例外,比如对映射成内存地址的I/O口、写合并(Write-combined)内存,这些访问至少会绕开这个流程的一部分。但这两者都是罕见的场景,绝大多数的用户态代码都不会遇到这两种情况。)

裸机编程是指编写在没有操作系统的情况下可直接运行的程序。这些程序直接操作硬件,这并非意味着需要编写程序代码来控制硬件一步一步地发出电信号。许多硬件在其内部的只读存储器(ROM)中预置了软件接口,称为固件。裸机代码通过正确地调用固件所提供的接口,可以达到直接操作硬件的目的。OS就是一个裸机程序!

x86的实模式:实地址模式。实,即真实,这个真实分为两个方面,一方面是指令不分权限,任何程序都可以执行所有指令,另一方面是指令地址是真实的,没有MMU转换。

-- 目录[3] --

-- 文章[11] --