今天,当我们坐在电脑前沉浸在游戏中,和远在他乡的女友、朋友、家人聊天和语音,在互联网上冲浪、查找资料,通过网络购买自己喜欢的图书和零食,这一切目前都觉得如此地惬意和自得。但是今天的一切,也许大部分都想不到,为了这一些是多少人前赴后继,付出了可歌可泣的贡献才得到地。
最近,HW HarmonyOS又冲上热搜,大家都希望中国又一款自主可控的国产系统,实现操作系统的“弯道超车”,回顾中国历史上的操作系统有很多不堪回首的事件,但是曾经发生的事情和有过的经历,却可以让我们更加珍惜这来之不易的幸福。而了解成功人/事的历史,更可让我们受益菲浅。 现在就让我带大家去回顾一下,这有趣而又激励人心的辉煌历史。
古老CPU启示录-Intel 4004
News Watch
如今8位单片机的用途越来越少了,32位单片机越来越常见,但是你见过4-bit的CPU吗?
1969年,日本计算机公司与英特尔合作,为其新的Busicom 141-PF *打印计算器设计12种定制芯片。英特尔工程师提出了一个只有四个芯片的家族,其中一个可以编程用于多种产品,从而激发了工程学的壮举,极大地改变了电子学的发展方向。 当时Intel给出的解决方案是一套四块芯片组成的微型计算机,称为MCS-4。
它包括一个中央处理单元(CPU)芯片-4004,以及一个用于定制应用程序的支持的只读存储器(ROM)芯片,一个用于处理数据的随机存取存储器(RAM)芯片以及一个移位存储-输入/输出(I / O)端口的寄存器芯片。从上面看出和目前商用计算机组成基本没什么变化,可是那时候是1971年,感叹其伟大!
英特尔生产了三种主要的源代码变体:C4004,D4004和P4004。在英特尔C4004是待制造的第一芯片; 它具有白色陶瓷包装本身上可见的灰色痕迹。C4004的生产一直持续到1976年中,开始生产Intel D4004。D4004具有塑料黑色陶瓷包装。在英特尔P4004是塑料包装的版本。
自1975年中以来,美国国家半导体公司和日立公司已经开发了一些辅助资源。美国国家半导体生产了两个版本:INS4004J和INS4004D。所述INS4004J是16针黑,陶瓷DIP,而INS4004D版本是16引脚侧面钎焊,陶瓷DIP。另一个来源是HD35404所作日立。第三个来源是国际微系统公司(Microsystems International),该公司实际上是从1970年中期开始制造该芯片的增强版本的(也于1971年推出)。 几种“变形体”的区别:
Manufacturer | Model | Package |
Intel | C4004 | 16-pin Ceramic DIP |
Intel | D4004 | 16-pin Ceramic DIP |
Intel | P4004 | 16-pin Plastic DIP |
National Semiconductor | INS4004D | 16-pin Ceramic DIP |
National Semiconductor | INS4004J | 16-pin side-brazed Ceramic DIP |
Hitachi | HD35404 | 16-pin DIP |
Microsystems International | MF7114 | ? |
4004具有16个引脚,用于I / O,存储控制器,时钟相位,电源和复位。
引脚和说明 | |||
别针 # | 引脚名称 | 目的 | 解释 |
1个 | D0 | 双向数据总线引脚 | 与ROM和RAM的地址和数据通信发生在D0-D3上。 |
2个 | D1 | ||
3 | D2 | ||
4 | D3 | ||
5 | V SS | 主要供应 | |
6 | 时钟阶段1 | 时钟输入 | |
7 | 时钟阶段2 | ||
8 | 同步 | ROM和RAM同步 | 通过发信号通知时钟在上升沿来同步ROM和RAM。 |
9 | 重启 | 重置标志 | 逻辑1清除所有处理器状态寄存器,并强制程序计数器跳到地址0x0。RESET信号必须至少打开64个时钟周期才能生效。 |
10 | 测试 | 测试逻辑状态 | 信号可以通过JCN指令进行测试。 |
11 | 光盘 | CM-ROM输出 | ROM选择信号,用于从内存中检索数据。 |
12 | V DD | V SS -15±5% | |
13 | CM-RAM 3 | CM-ROM输出 | 系统中4002 RAM芯片的存储体选择信号。 |
14 | CM-RAM 2 | ||
15 | CM-RAM 1 | ||
16 | CM-RAM 0 |
内部结构
News Watch
寄存器组
News Watch
名称 | 大小(bits) | |
– | Accumulator | 4 |
– | Carry/Link | 1 |
索引寄存器 | Index Registers ( IR ) | (4+4)*8 |
程序寄存器 | Program Counter ( PC ) | 12 |
程序寄存器 | Program Counter ( PC ) | 12 |
堆栈指针 | Stack Pointer ( Stack ) | 12*3 |
临时寄存器 | TEMP.REG | 4 |
– | INSTRUCTION REGISTER | 8 |
指令集
News Watch
(带 * 号的是双字指令,需要两个指令周期(1指令周期 = 8时钟周期))
基础指令 | ||||
HEX | 助记符 | 指令字1 | 指令字2 | 功能 |
00 | NOP | 0000 0000 | – | 无 |
1 | *JCN | 0001 CCCC | AAAA AAAA | 当条件C成立,跳转到当前ROM页的A地址 |
2 | *FIM | 0010 RRR0 | DDDD DDDD | 取当前页D地址处的数据,送至IR的R号寄存器对内 |
3 | FIN | 0011 RRR0 | – | 取IR中第0寄存器对数据作为ROM页内地址,将数据送至IR寄存器的R号寄存器对内 |
3 | JIN | 0011 RRR1 | – | 将IR中R号寄存器对内数据作为间接跳转地址进行跳转 |
4 | *JUN | 0100 AAAA | AAAA AAAA | 无条件跳转至地址A |
5 | *JMS | 0101 AAAA | AAAA AAAA | 无条件跳转至地址A,将原地址保存在堆栈SP中 |
6 | INC | 0110 RRRR | – | RRRR寄存器+1 |
7 | *ISZ | 0111 RRRR | AAAA AAAA | RRRR寄存器+1,如果结果不为0,跳转至页内地址A |
8 | ADD | 1000 RRRR | – | AC=AC+RRRR+C |
9 | SUB | 1001 RRRR | – | AC=AC-RRRR-C |
A | LD | 1010 RRRR | – | AC=RRRR |
B | XCH | 1011 RRRR | – | AC与RRRR交换 |
C | BBL | 1100 DDDD | – | 借助堆栈地址返回,AC=DDDD |
D | LDM | 1101 DDDD | – | AC=DDDD |
F0 | CLB | 1111 0000 | – | AC=0,C=0 |
F1 | CLC | 1111 0001 | – | C=0 |
F2 | IAC | 1111 0010 | – | AC=AC+1 |
F3 | CMC | 1111 0011 | – | C=~C |
F4 | CMA | 1111 0100 | – | AC=~AC |
F5 | RAL | 1111 0101 | – | {C,AC}向左循环平移一位 |
F6 | RAR | 1111 0110 | – | {C,AC}向右循环平移一位 |
F7 | TCC | 1111 0111 | – | AC=C, C=0 |
F8 | DAC | 1111 1000 | – | AC=AC-1 |
F9 | TCS | 1111 1001 | – | 当C=0,AC=1001当C=1,AC=1010 |
FA | STC | 1111 1010 | – | C=1 |
FB | DAA | 1111 1011 | – | 对AC执行BCD修正 |
FC | KBP | 1111 1100 | – | 对AC进行独热码到二进制转换若输入非法值,AC=1111 |
FD | DCL | 1111 1101 | – | 使用AC的低3位进行转换页AC=000时选择CM0其他情况以三位分别控制 |
I/O与RAM指令 | ||||
2 | SRC | 0010 RRR1 | – | 分别在指令周期的X2与X3处将R寄存器保存的页内地址送至ROM和RAM |
E0 | WRM | 1110 0000 | – | 将AC写入选中的RAM主字符( 4位 )中 |
E1 | WMP | 1110 0001 | – | 将AC写入选中的RAM端口中( 注:MCS-4中,RAM/ROM亦用作IO端口 ) |
E2 | WRR | 1110 0010 | – | 将AC写入选中的ROM端口中 |
E3 | WPM | 1110 0011 | – | 将AC写入选中的可读写程序存储器中( 搭配4008/4009/4289使用 ) |
E4 | WR0 | 1110 0100 | – | 将AC写入选中的RAM的0号状态字符中 |
E5 | WR1 | 1110 0101 | – | 将AC写入选中的RAM的1号状态字符中 |
E6 | WR2 | 1110 0110 | – | 将AC写入选中的RAM的2号状态字符中 |
E7 | WR3 | 1110 0111 | – | 将AC写入选中的RAM的3号状态字符中 |
E8 | SBM | 1110 1000 | – | {C,AC}=AC-C-选中的RAM主字符 |
E9 | RDM | 1110 1001 | – | 将选中的RAM主字符写入AC |
EA | RDR | 1110 1010 | – | 将选中的ROM输入端口数据写入AC |
EB | ADM | 1110 1011 | – | {C,AC}=AC+C+选中的RAM主字符 |
EC | RD0 | 1110 1100 | – | 将选中的RAM的0号状态字符写入AC |
ED | RD1 | 1110 1101 | – | 将选中的RAM的1号状态字符写入AC |
EE | RD2 | 1110 1110 | – | 将选中的RAM的2号状态字符写入AC |
EF | RD3 | 1110 1111 | – | 将选中的RAM的3号状态字符写入AC |
以上就是Intel公司首款商用处理器,Intel原本只是造存储器的一家小公司,因为日本Busicom公司(造计算器)的小看,从此Intel慢慢转型进入微处理器的市场,一发不可收拾成。4004是Intel历史性的标志。
MCS-4就是4004处理器+4001ROM+4002RAM+4003SR的组合,微型计算机就是多块芯片的集合,中央处理器用来负责控制和管理,下一讲我们将讲解MCS-4微型计算机,看看这一牛逼的微型计算机。
总结
News Watch
总结一下,Intel 4004有什么先进性值得学习?
1、英特尔4004成为市场上第一个通用可编程处理器—工程师可以购买并使用软件进行定制以在各种电子设备中执行不同功能的“基石”; 2、体积小巧,尽管在1971年,这款革命性的微处理器只有一个指甲大小,具有与1946年制造的第一台电子计算机相同的计算能力,该电子计算机占据了整个房间。
3、与当今产品通常使用的12英寸晶圆相比,第一个Intel4004微处理器是在2英寸晶圆上生产的。英特尔4004微处理器的独特之处在于,它是有史以来投入商业生产的最小的微处理器设计之一。
4、1971年,英特尔4004处理器装有2,300个晶体管。到2010年,具有32纳米处理管芯和第二代高k金属栅极硅技术的英特尔酷睿处理器可容纳5.6亿个晶体管。
5、英特尔4004微处理器电路的线宽为10微米或10,000纳米。如今,英特尔微处理器的电路功能范围在45至10纳米之间。相比之下,人的平均头发宽度为100,000纳米。
位数/频率:4bit/6万次
频率/前端总线:108KHZ/0.74MHz (4bit)
封装/针脚数量:陶瓷DIP,塑封DIP / 16针
核心技术/晶体管数量:10微米 / 225
参考链接:https://www.4004.com/busicom-replica.html
http://www.intel4004.com/
http://e4004.szyc.org/
https://en.wikichip.org/wiki/intel/mcs-4
编辑:jq
全部0条评论
快来发表一下你的评论吧 !