关于ARM的一些基本概念,大家可以参考我之前的文章:
到底什么是Cortex、ARMv8、arm架构、ARM指令集、soc?一文帮你梳理基础概念【科普】
一口网Linux:嵌入式工程师到底要不要学习ARM汇编指令?
一口网Linux:1. 从0开始学ARM-安装Keil MDK uVision集成开发环境
一、计算机架构
在了解计算机架构之前,我们先来认识几位对计算机的发明做出关键共享的几位大佬。
1. 巴贝奇
机械计算机之父,英国贵族,曾孤军奋战下造出的第一台差分机,运算精度达到了6位小数,后来又设计了20位精度的差分机,其设计理念已经达到了机械设计登峰造极的境界。
1985~1991年,伦敦科学博物馆为了纪念巴贝奇诞辰200周年,根据其1849年的设计,用纯19世纪的技术成功造出了差分机2号。
巴贝奇堪称上个世纪最强大脑,他的大脑现保存在英国科学博物馆。
程序员的祖师奶奶Ada正是在和巴贝奇共同工作时提出了程序循环分支等等我们现在都习以为常的编程理念。
2. 图灵
被称为计算机科学之父,人工智能之父。1931年图灵进入剑桥大学国王学院,毕业后到美国普林斯顿大学攻读博士学位,第二次世界大战爆发后回到剑桥,后曾协助军方破解德国的著名密码系统Enigma,帮助盟军取得了二战的胜利。图灵对于人工智能的发展有诸多贡献,提出了一种用于判定机器是否具有智能的试验方法,即图灵试验,至今,每年都有试验的比赛。
图灵在战时服务的机构于1943年研制成功的CO-LOSSUS(巨人)机,这台机器的设计采用了图灵提出的某些概念。它用了1500个电子管,采用了光电管阅读器;利用穿孔纸带输入;并采用了电子管双稳态线路,执行计数、二进制算术及布尔代数逻辑运算,巨人机共生产了10台,用它们出色地完成了密码破译工作。
强烈推荐这部根据图灵生平改编的电影《模仿游戏》,一起感受下这个绝世天才不平凡的一生。
3. 冯诺依曼-《计算机与人脑》
计算机架构主要有两种:哈佛架构、冯诺依曼架构。现代计算机,大部分都是基于冯诺依曼体系结构。
我个人认为冯诺依曼应该是上个世纪「最聪明的人,没有之一」。
他的个人成就在此就不说了,大家可以自行搜索,很多成就,一口君连名字都看不懂,只有博弈论还勉强知道是啥意思。
本文只讨论大神对计算机的贡献【其实计算机并不是大神的最厉害的成就,而且他也并没有花太多时间精力在计算机的研究上】。
1955年10月,诺伊曼,被查出患有癌症。而他几乎是在他生命的最后时刻,于临终的病榻上撰写了关于人的神经系统与计算机关系的讲稿。1958年,他的讲稿以《计算机与人脑》为题出版。
诺依曼从数学的角度,主要是从逻辑和统计数学的角度,讨论了神经系统的刺激——反应和记忆等问题,提出神经系统具有数字部分和模拟部分两方面的特征,探讨了神经系统的控制及逻辑结构。
4. 冯诺依曼架构
冯诺依曼的核心是:「存储程序,顺序执行」,规定计算机必须具有如下功能:
- 把需要的程序和数据送至计算机中;
- 必须具有长期记忆程序、数据、中间结果及最终运算结果的能力;
- 能够完成各种算术、逻辑运算和数据传送等数据加工处理的能力;
- 能够根据需要控制程序走向,并能根据指令控制机器的各部件协调操作;
- 能够按照要求将处理结果输出给用户
5. 哈佛架构
冯诺依曼结构和哈佛结构是有区别的。
冯诺依曼结构是程序存储区和数据存储器都是可以放到内存中,统一编码的,而哈弗结构是分开编址的。
6. 哪些处理器是哈佛架构、冯诺依曼架构?
「哈佛架构」
MCU(单片机)几乎都是用哈佛结构,譬如广泛使用的51单片机、典型的STM32单片机(核心是ARM Cortex-M系列的)都是哈佛结构。
「冯诺依曼架构」
PC和服务器芯片(譬如Intel AMD),ARM Cortex-A系列嵌入式芯片(譬如核心是ARM Cortex-A9的三星exynos-4412,譬如华为的麒麟970等手机芯片)等都是冯诺依曼结构。这些系统都需要大量内存,所以工作内存都是DRAM,因为他们更适合使用冯诺依曼系统。
「混合结构」
实际上现代的CPU(准确说叫SoC)基本都不是纯粹的哈佛结构或冯诺依曼机构,而都是混合结构的。
比如三星exynos 4412,使用ARM的Cortex-A9核心。基于exynos 4412开发板上都配备了1024MB的DDR SDRAM,和8GB的EMMC。
正常工作时所有的程序和数据都从EMMC中加载到DDR中,也就是说不管你是指令还是数据,存储都是在EMMC中,运行时都在DDR中,再通过cache和寄存器送给CPU去加工处理。这就是典型的冯诺依曼系统。
但是,exynos 4412内部仍然有一定容量的64KB irom和64KB iram,这些irom和iram是用于SoC引导和启动的,芯片上电后首先会执行内部irom中固化的代码,其实执行这些代码时4412就好像一个MCU一样,irom就是他的flash,iram就是他的SRAM,这又是典型的哈佛结构。
这就是混合式结构设计,而非纯粹设计。之所以采用混合式设计其实就是为了各取所长而已。
不管白猫黑猫,解决问题就是好猫。