提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、二进制计算机发展史(网上摘抄)
  • 二、AOS方案规划
    • 1、简化Linux代码量
    • 2、IPC消息包结构
    • 3、多核处理器256位内部总线和APIC
  • 三、CPU规划

前言

不会一次而成,需反复多次修改,前面发布的有错难免、会经常修改,后面发布的为准。
为与虚拟内存页的概念一致,修改为:1c(章chapter)= 8kp页(page) = 64ks(扇区sector),1p页(page)= 8s(扇区sector)= 4kb。

多核处理器则是指在单个芯片上包含任意多个(如2、4、8、...64、128)CPU的处理器,可以通过256位内部总线来交互数据、共享三级L3缓存数据;每个核都有自己的寄存器、算术逻辑单元ALU(Arithmetic Logical Unit)或可伸缩向量运算单元SVCU(Scalable Vector calculations Unit)或ALU+SVCU,以及私有的一级L1二级L2缓存;这些CPU通过总线来交互数据及相互通信,并且工作是并行的,内部总线速率512Gbps。图1是一种想象方案,挂在256位内部总线上有64个CPU节点(节点63为APIC(Advanced Programmable Interrupt Controller)可编程外设中断控制器, 节点62为256位内部总线到64位总线开关矩阵的总线桥(包含DDR主内存控制器、DMA、外部设备接口、等等),节点0--4为木火土金水五个内核线程CPU,节点5-31为27个用户空间进程CPU,节点32--61为30个可伸缩向量运算单元SVCU),节点之间为IPI(inter processor interrupt)中断模式进行消息通信。APIC收集各个外设的中断,并翻译成总线上的message,传递到某个CPU节点。APIC会开放一些寄存器让CPU节点访问、控制,以装配内核线程或用户进程或线程之设备中断。为何用256到64的总线桥?这是因要节省芯片的外部引脚,DDR的64位数据总线+48位地址总线就112根了,还有DDR的辅助引脚、各种外设的一堆引脚啊。

将每一个进程看作一个独立的“容器”,0号(一堆内核线程)和1号(init)祖先进程是属于内核进程,其它是用户进程。系统资源分配是由内核的操作系统AOS(内核进程)来完成的,包括CPU资源;AOS目的是努力将所有共享资源“私有化”,分工合作、减少竞争和并发。内核容器管理大部分系统资源,最好是有5个CPU核来参与管理;划分为木火土金水五类系统资源、相应有5个AOS内核线程CPU来管理,或说划分为:时间管理员Time Administrator、空间管理员Space Administrator、通信管理员Communications administrator(进程间通信IPC、通信设备、人机和机机交流)、界面管理员Interface administrator(包含输入输出设备、释放行为等等)、生发管理员Birth administrator(节点管理、树状结构、分配行为等等)五类。后者的分类法是为了兼容现代二进制体系的计算机操作系统,而前者的分类法、背后还有着更深层次的意义(使用另一系列的概念和术语)。

简易操作系统AOS目标:小于5千行代码量,也并非就是“简单、代码量少”的意思;其实、AOS除了代码量较小外、各方面性能远超linux、windows。我真实想玩的OS分为三层:AOS二进制体系操作系统(类同现代二进制体系的计算机操作系统),二进制体系AOS之上的层次为三进制(阴阳中、模糊判断,真真假假、亦真亦假、或真或假、非真非假)体系BOS,BOS之上为虚拟生命体系COS。道生一、一生二(分阴阳)、三生万物。我不管什么是“项目”,玩就是了。十多年来,我从“物理哲学”层面、“中古音”层面、“计算机”层面,3方面向“宇宙深处”进军;发现不少奥秘,但无法都表达出来,并非我不想说;而是当你的“情到达深处”,就会明白什么是“封印”、什么是“不可言语之无奈”。这次在“计算机”层面玩,不外是想升级“电脑”为“类人脑”,简单说就是想达到“灵魂出窍、人机合一”。现代电脑的本源是基于“阴阳八卦”而来的“二进制”体系,最终结果也只能是
“机械脑”。想升级,那只能是从中国古代哲学智慧中吸取“营养”、将:太极、阴阳、三才、四象、五行、六气、七音、八卦、九宫、中医、等方面的知识,糅合进去,未来的电脑必定是“三进制”的。定下目标、边学边干,AOS虽是漫漫长路,但也只是依感觉而行的其中一条玩乐之路吧。

以太阳为中心、看环绕太阳旋转的星球排序:土星(甲土)、木星、火星、地球(乙土)、金星、水星,是五行相生序和隔列相克序:木生火、火生土、土生金、金生水、水生木,木克土、土克水、水克火、火克金、金克木。
以地球为中心排序:土星、木星、火星、金星、水星,木火属阳而金水土属阴。
⚫ 生发管理员Badm:肝木血藏魂,主生发。为创建、“生血”、节点树。
⚫ 时间管理员Tadm:心火藏神,为调度(运)、为“动力”,为定时器、时间线。
⚫ 空间管理员Sadm:脾土肉藏意,为内存、闪存、磁盘、等等空间及其所藏之血,文件、数据、代码(方法库)、为之“血”,血肉相连啊、血的依靠为肉、肉为静阴、血动为阳,一切之“意”不就都在血肉之中。
⚫ 通信管理员Cadm:肾水精藏志,主进程间的中断消息通信IPC(Internal Process Communication)。指令即是“精”、是“水”,气血的流动终是消息通信从而指令执行的结果。
志既是“七情六欲”,七情:喜、怒、忧、思、悲、恐、惊,六欲:眼、耳、鼻、舌、身、意、的生理需求或愿望,意欲:爱、恨、恶、伤。
⚫ 界面管理员Iadm:肺金气藏魄,主气息出入界面。文件数据流、输入输出消息流、外部控制消息流,三者为外内交换的“气息”,在内部类比为“血”的流动。“天氣歸、地氣藏、木氣生、風氣動、火氣長、水氣育、山氣止、金氣殺”。
⚫ 万物的一生:魂气生、而神主运、而意动,气血流而志显现,情迷荡漾终而金气杀。
五行对应的是五藏、非实心的五脏器官,也非空心的六腑容器,乱了吧、呵呵,是故该博客往后相当长的时间内只说AOS。

⚫ 可以说:AOS有五个最基本的内核服务器(五行服务器、也或许用了5个CPU核),其实、AOS内核存在10多个服务器;CPU之间或说服务器之间、采用进程或线程之间的IPC通信,AOS的本质是微内核结构。

一、二进制计算机发展史(网上摘抄)

史前时代【1623——1895】
1623年:德国科学家契克卡德(W. Schickard)制造了人类有史以来第一台机械计算机,这台机器能够进行六位数的加减乘除运算。
1642年:法国科学家帕斯卡(B.Pascal)发明了著名的帕斯卡机械计算机,首次确立了计算机器的概念。
1674年:莱布尼茨改进了帕斯卡的计算机,使之成为一种能够进行连续运算的机器,并且据“中国古代八卦理论”提出了“二进制”数的概念。
1725年:法国纺织机械师布乔(B.Bouchon)发明了“穿孔纸带”的构想。
1805年: 法国机械师杰卡德(J.Jacquard)根据布乔“穿孔纸带”的构想完成了“自动提花编织机”的设计制作,在后来电子计算机开始发展的最初几年中,在多款著名计算机中我们均能找到自动提花机的身影。
1822年:英国科学家巴贝奇(C.Babbage)制造出了第一台差分机,它可以处理3个不同的5位数,计算精度达到6位小数。
1834 年:巴贝奇提出了分析机的概念,机器共分为三个部分:堆栈,运算器,控制器。他的助手, 英国著名诗人拜伦的独生女阿达.奥古斯塔(Ada Augusta)为分析机编制了人类历史上第一批计算机程序。阿达和巴贝奇为计算机的发展创造了不朽的功勋,他们对计算机的预见起码超前了一个世纪以上,正是他们的辛勤努力,为后来计算机的出现奠定了坚实的基础。
1847年:英国数学家布尔(G.Boole)发表著作《逻辑的数学分析》。
1854年:布尔发表《思维规律的研究——逻辑与概率的数学理论基础》,并综合自己的另一篇文章《逻辑的数学分析》,从而创立了一门全新的学科-布尔代数,为百年后出现的数字计算机的开关电路设计提供了重要的数学方法和理论基础。
1868年:美国新闻工作者克里斯托夫.肖尔斯(C.Sholes)发明了沿用至今的QWERTY键盘。
1873年:美国人鲍德温(F. Baldwin)利用自己过去发明的齿数可变齿轮制造了第一台手摇式计算机。
1886年:美国人Dorr E. Felt (1862-1930), 制造了第一台用按键操作的计算器。
1890年:美国在第12次人口普查中使用了由统计学家霍列瑞斯(H.Hollerith)博士发明的制表机,从而完成了人类历史上第一次大规模数据处理。此后霍列瑞斯根据自己的发明成立了自己的制表机公司,并最终演变成为IBM公司。
1893年:德国人施泰格尔研制出一种名为“大富豪”的计算机,该计算机是在手摇式计算机的基础上改进而来,并依良好的运算速度和可靠性而占领了当时的市场,直到1914年第一次世界大战爆发之前,这种“大富豪”计算机一直畅销不衰。
1895年: 英国青年工程师弗莱明(J.Fleming)通过“爱迪生效应”发明了人类第一只电子管。电子管时代【1911——1946】,软件方面采用的是机器语言、汇编语言。
1911年:6月15日,美国华尔街金融投资家弗林特(C.Flent)投资霍列瑞斯的制表机公司,成立了全新的CTR公司,但公司创立之初并没有涉足任何电子领域,反而生产诸如碎纸机或者土豆削皮机之类的产品。
1912年:美国青年发明家德.福雷斯特(L.De Forest)在帕洛阿托小镇首次发现了电子管的放大作用,为电子工业奠定了基础,而今日的帕洛阿托小镇也已成为硅谷的中心地带。
1913年:美国麻省理工学院教授万.布什(V.Bush)领导制造了模拟计算机“微分分析仪”。机器采用一系列电机驱动,利用齿轮转动的角度来模拟计算结果。
1924年:硅谷之父特曼担任斯坦福大学教授,对创建HP、成立斯坦福工业园区起到决定性作用。2月,由霍列瑞斯创办的制表机公司几经演变,最终更名为国际商用机器公司,即我们今天看到的IBM。
1935年:IBM制造了IBM601穿孔卡片式计算机,该计算机能够在一秒钟内计算出乘法运算。20多岁的德国工程师楚泽(K.Zuse)研制出了机械可编程计算机Z1,并采用了二进制形式,其理论基础即来源于布尔代数。
1937年:11月,美国AT&T贝尔实验室研究人员斯蒂比兹(G. Stibitz)制造了电磁式数字计算机“Model-K”。
1939年:元旦,美国斯坦福大学研究生比尔.休利特(B.Hewllet)和戴维.帕卡德(D.Packard)正式签署企业合伙协议,创办了Hewllet-Packard(HP)公司,即国内通称的惠普公司。
9月,贝尔实验室研制出M-1型计算机。
10 月,约翰.阿塔纳索夫(John Vincent Atanasoff(1903-1995))制造了后来举世闻名的ABC计算机的第一台样机,并提出了计算机的三条原则,
(1)以二进制的逻辑基础来实现数字运算,以保证精度;
(2)利用电子技术来实现控制,逻辑运算和算术运算,以保证计算速度;
(3)采用把计算功能和二进制数更新存贮的功能相分离的结构。这就是著名的计算机三原则。
1940 年:9月,贝尔实验室在美国达特默思大学演示M—1型机。他们用电报线把安置在校园内的M—1型机和相连,当场把一个数学问题打印出来并传输到纽约,M— 1型机在达特默思大学的成功表演,首次实现了人类对计算机进行的远距离控制的梦想。 控制论之父维纳提出了计算机五原则,
(1)不是模拟式,而是数字式;
(2)由电子元件构成,尽量减少机械部件;
(3)采用二进制,而不是十进制;
(4)内部存放计算表;
(5)在计算机内部存贮数据。
1941年:楚泽完成了Z3计算机的研制工作,这是第一台可编程的电子计算机。可处理7位指数、14位小数。使用了大量的真空管。每秒种能作3到4次加法运算,一次乘法需要3到5秒。
1942 年:时任美国依阿华州立大学数学物理教授的阿塔纳索夫(John V. Atanasoff)与研究生贝瑞(Clifford Berry)组装了著名的ABC(Atanasoff-Berry Computer)计算机,共使用了300 多个电子管,这也是世界上第一台具有现代计算机雏形的计算机。但是由于美国政府正式参加第二次世界大战,致使该计算机并没有真正投入运行。
1943年:10月,绰号“巨人”用来破译德军密码的计算机在英国布雷契莱庄园制造成功,此后又制造多台,为第二次世界大战的胜利立下了汗马功劳。
1944 年:8月7日,由IBM出资,美国人霍德华.艾肯(H.Aiken)负责研制的马克1号计算机在哈佛大学正式运行,它装备了15万个元件和长达800公里的电线, 每分钟能够进行200次以上运算。女数学家格雷斯.霍波(G.Hopper)为它编制了计算程序,并声明该计算机可以进行微分方程的求解。马克1号计算机的问世不但实现了巴贝奇的夙愿,而且也代表着自帕斯卡计算机问世以来机械计算机和电动计算机的最高水平。
1946 年:2月14日,美国宾西法尼亚大学摩尔学院教授莫契利(J. Mauchiy)和埃克特(J.Eckert)共同研制成功了 ENIAC  (Electronic Numerical Integrator And Computer):计算机。这台计算机总共安装了17468只电子管,7200个二极管,70000多电阻器,10000多 只电容器和6000只继电器,电路的焊接点多达 50万个,机器被安装在一排2.75米高的金属柜里,占地面积为170平方米左右,总重量达到30吨,其运算速度达到每秒钟5000次加法,可以在 3/1000秒时间内做完两个10位数乘法。晶体管时代【1947——1958】,软件方面采用的是机器语言、汇编语言。
1947年:12月23号,贝尔实验室的肖克利 (William B. Shockley),布拉顿(John Bardeen),巴丁 (Walter H. Brattain)创造出了世界上第一只半导体放大器件,他们将这种器件重新命名为“晶体管” 从上到下依次为:肖克利,布拉顿和巴丁。
1948 年:6月10日,香农在《贝尔系统技术杂志》(Bell System Technical Journal)上连载发表了他影像深远的论文《通讯的数学原理》,并于次年在同一杂志上发表了自己的另一著名论文《噪声下的通信》。在这两篇论文中,香农阐明了通信的基本问题,给出了通信系统的模型,提出了信息量的数学表达式,并解决了信道容量、信源统计特性、信源编码、信道编码等一系列基本技术问题。两篇论文成为了信息论的奠基性著作,此时尚不足三十岁的香农也成为了信息论的奠基人。
12月,ENAIC的两位缔造者共同创办了世界上第一家电脑公司“埃克特—莫契利计算机公司”(EMCC)。
1949 年:当时尚在美国哈佛大学计算机实验室的上海籍华人留学生王安向美国国家专利局申请了磁芯的专利。贝尔实验室制造了M系列计算机的最后一个型号:M-6,并从此不在涉足计算机的研制与生产。贝尔实验室所研制的M系列继电器计算机,是从机械计算机过波到电子计算机的重要桥梁。
9月,“马克”3号计算机研制成功,“马克”3号也是霍德华.艾肯研制的第一台内存程序的大型计算机,他在这台计算机上首先使用了磁鼓作为数与指令的存储器,这是计算机发展史上的一项重大改进,从此磁鼓成为第一代电子管计算机中广泛使用的存储器。英国剑桥大学数学实验室的Wilkes和他的小组建成了一台存储程序的计算机EDSAC,输入输出设备仍是纸带。
1950年:东京帝国大学的Yoshiro Nakamats发明了软磁盘,从而开创了计算机存储的新纪元。
10月,阿兰.图灵发表自己另外一篇及其重要的论文《机器能思考吗》,从而为人工智能奠定了基础,图灵也获得了“人工智能之父”的美誉。甚至有人说在第一代电脑占统治地位的那个时代,这篇论文我们可以把它看作第五代,第六代电脑的宣言书。
1951年:6月14日,当时已在雷明顿—兰德(Remington-Rand)公司任职的莫契利和埃克特再次联袂制造的UNIVAC计算机正式移交美国人口普查局使用,从而使电脑走出了实验室,开始为人类社会服务,从此人类社会进入了计算机时代。
6月,王安创办了王安实验室,即王安电脑公司的前身,从此开始了王安电脑传奇般的历程。
1952 年:1月,由计算机之父,冯.诺伊曼(Von Neumann)设计的IAS电子计算机EDVAC问世。这台IAS计算机总共采用了2300个电子管,运算速度却比拥有18000个电子管的“埃尼阿克”提高了10倍,冯.诺伊曼的设想在这台计算机上得到了圆满的体现。
1953年:4月7日,IBM正式对外发布自己的第一台电子计算机 IBM701。并邀请了冯.诺依曼、肖克利和奥本海默等人共150名各界名人出席揭幕仪式,为自己的第一台计算机宣传。
8月,IBM发布了应用与会计行业的IBM702计算机。
IBM推出了中型计算机IBM650,以低廉的价格和优异的性能在市场中获得了极大的成功,至此,IBM在市场中确立了领导者的地位。贝尔实验室使用800只晶体管组装了世界上第一台晶体管计算机TRADIC。
1956 年:美国达特莫斯大学(Dartmouth)青年助教麦卡锡,哈佛大学明斯基、贝尔实验室香农(E.Shannon)和IBM公司信息研究中心罗彻斯特(N. Lochester)共同在达特莫斯大学举办了一个沙龙式的学术会议,他们邀请了卡内基—梅隆大学纽厄尔和赫伯特.西蒙、麻省理工学院塞夫里奇(O. Selfridge)和索罗门夫(R.Solomamff),以及IBM公司塞缪尔(A.Samuel)和莫尔(T.More)。这就是著名的“达特莫斯”会议。在经过充分的讨论后,他们首次提出了“人工智能”这一术语,从而标志着人工智能作为一门新兴学科的出现。
9月,IBM的一个工程小组向世界展示了第一台磁盘存储系统 IBM 350 RAMAC(Random Access Method of Accounting and Control)
1957年:8月,“数字设备公司”(简称DEC)在美国波士顿成立。创立者是来自于麻省理工学院的肯.奥尔森(K.Olsen)。此后的数十年中,DEC公司依*自己的PDP系列,开创了小型机时代。
10 月,诺依斯(N. Noyce)、摩尔(R.Moore)、布兰克(J.Blank)、克莱尔(E.Kliner)、赫尔尼(J.Hoerni)、拉斯特(J.Last)、罗伯茨(S.Boberts)和格里尼克(V.Grinich)共同从晶体管之父肖克利的实验室出走,创办了仙童(fairchild)公司,这就是历史上著名的“八天才叛逆”,从此,才有了我们熟悉的intel,AMD,IDT等等一大批我们熟知的企业。
1958年:11月,IBM推出了自己的IBM709大型计算机,这时IBM公司自IBM701以来性能最为优秀的电子管计算机,但同时它也是IBM最后一款电子管计算机。集成电路时代【1959——1970】,软件方面采用的是机器语言、汇编语言、高级语言、unix操作系统。
1959年:2月6日, 来自曾开发出第一台晶体管收音机的TI公司的基尔比(J.Kilby) 向美国专利局申报专利“半导体集成电路”。
7月30日,仙童公司向美国专利局申请专利“半导体集成电路”。
1960年:麻省理工学院教授约瑟夫.立克里德(J.Licklider)发表了著名的计算机研究论文《人机共生关系》,从而提出了分时操作系统的构想,并第一次实现了计算机网络的设想。
1962年:供职于蓝德公司的保罗.巴兰发表了一篇具有里程碑式意义的学术报告《论分布式通信》,在文中他首次提出了“分布式自适应信息块交换”,这就是我们现在称之为“分组交换”的通讯技术。
1963年:8月,控制数据公司(CDC)的西蒙.克雷(S. Cray)博士带领自己的研发小组研制成功CDC6600巨型机,CDC6600仍属于第二代电脑,共安装了35万个晶体管。
剑桥大学发明CPL组合程序设计语言(Combined Programming Language)
1964年: 4月7日,在IBM成立50周年之际,由年仅40岁的吉恩.阿姆达尔(G. Amdahl)担任主设计师,历时四年研发的IBM360计算机问世,标志着第三代计算机的全面登场,这也是IBM历史上最为成功的机型。
1965年:DEC公司推出了PDP-8型计算机,标志着小型机时代的到来。当时尚在仙童公司的摩尔发表了一篇仅有三页篇幅的论文,这就是对今后半导体发展有着深远意义的“摩尔定律”。
1966年:时任美国国防部高级研究规划属(ARPA)信息处理技术办公室(IPTO)主管的鲍伯.泰勒启动了“阿帕”(ARPA)网的研究计划。虽然他本人在事后一直强调“阿帕”网本身不是用于军事目的,但是他所在的部门却是冷战时期的产物。
1967年:剑桥的Matin Richards 对CPL做了简化,推出了基本组合程序设计语言BCPL(Base Combined Programming Language)。
1968年:IBM公司首次提出“温彻斯特/Winchester”技术,探讨对硬盘技术做重大改造的可能性。
4月,“通用数据公司”(简称DGC)成立,创办人为从DEC离职的PDP-8设计师卡斯特罗。
7月18日,从仙童公司辞职的戈登.摩尔(Gordon.Moore),罗伯特.诺伊斯(Robert.Noyce),威廉.肖克利(William.Shockley)共同创立了Intel公司,从此为计算机的发展和普及做出了不可磨灭的贡献。
12月9日,美国加利福尼亚大学的恩格巴特(Douglas Englebart)博士发明了世界上第一只鼠标。它的工作原理即通过底部小球的滚动带动枢轴转动,并带动变阻器改变阻值来产生位移信号,信号经计算机处理,屏幕上的光标就可以移动。恩格巴特博士设计鼠标的初衷就是想通过这种简便的操作方式来代替繁琐的键盘操作,但是在鼠标诞生最初的十多年中人们并没有认识到这种操作方式的简便性,直到1984年苹果Macintosh的诞生才改变了人们的陈旧观念。(另有一种说法为恩格巴特博士于1964年发明了世界上第一只鼠标,并于1968年的IEEE会议上正式对外公布了其发明。)
1969年:DGC公司推出了自己的小型机Nova,成功的打入了一直被DEC把持的小型机市场,并成为当年最为红火的新兴企业。
5月1日,桑德斯(Jerry Sanders)从仙童公司辞职,并利用十万美元创立了AMD公司。
10月29日,阿帕网美国加州大学洛杉矶分校(UCLA)节点与斯坦福研究院(SRI)节点实现了第一次分组交换技术的远程通讯,这也标志着互联网的正式诞生。
贝尔实验室的ken Thompson(肯·汤普森)对BCPL又做了改进,设计出了简单的且接近硬件的B语言,并使用B编了个游戏 - Space Travel, 在一部PDP-7上开发了UNIX操作系统。
1970 年:首次提出“兼容性”概念的IBM360之父吉恩.阿姆达尔(G. Amdahl)由于IBM否决了继续开发大型机的计划而离开了IBM公司,并创立了Amdahl公司,开始在大型机领域向IBM发出挑战。虽然在此后不久他就丧失了对公司的控制权,但是他又接连创办了三步曲、Grid公司和 CDS公司,可是均宣告失败。阿姆达尔本人最终病逝于1996年。
10 月,美国施乐(Xerox)公司在今天硅谷的帕洛阿托成立了 Palo Alto Research Center(PARC)研究中心,更为重要的是施乐并没有为来到这里的科学家制定任何地研究计划,而是让他们自由得发挥。在此后的几年中,PARC诞生了以太网、鼠标、面相对象、图标、菜单、视窗等等一系列改变今后计算机发展方向的全新概念,并间接孵化了Windows、Office、Macintosh等划时代的软件作品,从其间走出的科学家还创立了Adobe、3Com、Novell等等改变IT世界格局的企业。微处理器时代【1971——1979】
1971年:来自《电子新闻》的记者唐﹒赫夫勒(Don Hoefler)依据半导体中的主要成分硅命名了当时帕洛阿托地区,硅谷由此得名。
1月,INTEL的特德.霍夫研制成功了第一枚能够实际工作的微处理器4004,该处理器在面积约12平方毫米的芯片上集成了2250个晶体管,运算能力足以超过ENICA。Intel于同年11月15日正式对外公布了这款处理器。
1972年:Ken Thompson的同事D.M.Ritchie(DM里奇),也很想玩Space Travel,所以加入了Ken Thompson,合作开发UNIX,他的主要工作是改进Thompson的B语言,在B的基础上设计出了C语言(C Programming Language)。C 保持了B的优点(精炼、接近硬件),又克服了他的缺点(过于简单,数据无类型)。
原CDC公司的西蒙.克雷(S. Cray)博士独自创立“克雷研究公司”,专注于巨型机领域。
1973年:5月22日,由施乐PARC研究中心的鲍伯﹒梅特卡夫(Bob Metcalfe)组建的世界上第一个个人计算机局域网络--ALTO ALOHA网络开始正式运转,梅特卡夫将该网络改名为“以太网”。
1974年:4月1日,Intel推出了自己的第一款8位微处理芯片8080。
12月,电脑爱好者爱德华.罗伯茨(E.Roberts)发布了自己制作的装配有8080处理器的计算机“牛郎星”,这也是世界上第一台装配有微处理器的计算机,从此掀开了个人电脑的序幕。
1975年:克雷完成了自己的第一个超级计算机“克雷一号”(CARY-1),实现了每秒一亿次的运算速度。该机占地不到7平方米,重量不超过5吨,共安装了约35万块集成电路,同时这也标志着巨型机跨进了第三代电脑的行列。
7月,比尔.盖茨(B.Gates)在成功为牛郎星配上了BASIC语言之后从哈佛大学退学,与好友保罗.艾伦(Paul Allen)一同创办了微软公司,并为公司制定了奋斗目标:“每一个家庭每一张桌上都有一部微型电脑运行着微软的程序!”
1976年:4月,斯蒂夫.沃兹尼亚克(Stephen Wozinak)和斯蒂夫.乔布斯(Stephen Jobs)共同创立苹果公司,并推出了第一款计算机:Apple-Ⅰ。
6 月,美国伊利诺斯大学的两位数学家沃尔夫冈.哈肯(W.Haken)和肯尼斯.阿佩尔(K. Apple)利用计算机成功的证明了困扰世界数学界长达100多年的“四色定理”(注:四色定理在1852年被提出,即任何地图均可由四种颜色组成就能区分所有两相邻的国家和地区)。
10月,雅达利公司推出了世界上第一款3D电子游戏《夜行车手》(Night Driver),游戏只有黑白两色,采用第一人称视角。
1977年:6月,拉里.埃里森(Larry Ellison)与自己的好友Bob Miner和Edward Oates一起创立了甲骨文公司(OracleCorporation)。
1979年:6月,鲍伯﹒梅特卡夫离开了PARC,并同Howard Charney、Ron Crane、Greg Shaw和 Bill Kraus组成一个计算机通信和兼容性公司,这就是现在著名的3Com公司。PC时代【1980——2004年】
1980年:年初,当时尚不知名的Novell公司推出了NetWare网络操作系统。
9月30日,DEC、Intel和Xerox共同发布了“以太网”技术规范,这就是现在著名的以太网蓝皮书。
1981年:7月,沈望傅创立了创新馄技公司。
8月12日,经过了一年的艰苦开发,由后来被IBM内部尊称为PC机之父的唐.埃斯特奇(D.Estridge)领导的开发团队完成了IBM个人电脑的研发,IBM宣布了IBM PC的诞生,由此掀开了改变世界历史的一页。
8月12日,微软推出来MS-DOS 1.0版。
1982 年:一名年仅15岁的少年通过计算机网络闯入了“北美空中防务指挥系统”,这是首次发现的从外部侵袭的网络事件。这个年轻人就是后来被判入狱的世界头号黑客,被美国联邦法院宣判终生不得接触计算机产品的凯文.米特尼克。他的另一件“事迹”就是在1994年的时候向圣迭戈超级计算机中心发动进攻,将整个互联网置于危险的境地。
2月,康尼恩(R.Canion)、史蒂麦克(G.Stimac)和巴雷斯(H.Barnes)共同成立了康柏(Compaq)公司。
2月, Intel发布80286处理器。时钟频率提高到20MHz,并增加了保护模式,可访问16M内存。支持1GB以上的虚拟内存。每秒执行270万条指令,集成了134000个晶体管。
9月29日,3Com公司推出了世界上第一款网卡-EtherLink网络接口卡,这也是世界上第一款应用于IBM-PC上的ISA接口网络适配器。
11月,康柏公司推出了便携式PC机Portable,这也是第一台非IBM制造的PC兼容机。
1983年:1月,苹果公司推出了研制费用高达5000万美元的丽萨(Lisa)电脑,这也是世界上第一台商品化的图形用户界面的个人计算机,同时这款电脑也第一次配备了鼠标。
5月8日,IBM推出了IBM PC的改进型号IBM PC/XT,并为其内置了硬盘。
贝尔实验室Bjarne Stroustrup(本贾尼·斯特劳斯特卢普) 在C语言的基础上推出了C++(C plus plus Programming Language),它扩充和完善了C语言,特别是在面向对象编程方面,一定程度上克服了C语言编写大型程序时的不足。
1984年:迈克尔.戴尔创立了DELL公司。
联想公司成立。
来自英国的Adlib Audio公司推出了第一款声卡:魔奇声卡,从而让PC拥有了真正的发声能力。
1月24日,苹果公司推出了划时代的Macintosh计算机,不仅首次采用了图形界面的操作系统,并且第一次使个人计算机具有了多媒体处理能力。
8月14日,IBM推出了采用intel 80286处理器的IBM PC/AT电脑。
年底,康柏开始开发IDE接口。
GNU是自由软件之父Richard Stallman在1984年组织开发的一个完全基于自由软件的软件体系,与此相应的有一分通用公共许可证(General Public License,简称GPL)。Linux以及与他有关的大量软件是在GPL的推动下开发和发布的。GNU的梦想:“自由的思想,而不是免费的午餐”。他不但自己创作了许多自由软件,如:GCC、和GDB,在他的倡导下,目前人们熟悉的一些软件如BIND、Perl、Apache、TCP/IP等都成了自由软件的经典之作。
1985年:Philips和Sony合作推出CD-ROM驱动器。
ATI(Array Technology Industry)成立。
7月,intel公司推出了计算机历史上有着举足轻重地位的80386处理器,这也是intel公司的第一枚32位处理器。
11月,在经历了多次延期之后,微软公司终于正式推出了Windows操作系统。
1986年:9月,康柏公司第一次领先于IBM推出桌上型386个人电脑Deskpro PC,这在当时引起了不小的轰动。
同月,Amstrad Announced发布便宜且功能强大、面向家庭设计的计算机Amstrad PC 1512。该机具有CGA图形适配器、512KB内存、8086处理器20兆硬盘驱动器,并采用了鼠标器和图形用户界面。
1987年:4月2日,IBM推出PS/2系统。最初基于8086处理器和老的XT总线。后来过渡到80386,开始使用3.5英寸1.44MB软盘驱动器。引进了微通道技术,这一系列机型在市场中取得了巨大成功,累计出货量达到200万台。
11月,微软推出了Windows 2.0版。相比于上一个版本,微软加入了动态数据交换和覆盖式窗口等先进技术。
Minix是一种基于微内核架构的类Unix计算机操作系统,由Andrew S. Tanenbaum发明。Minix最初发布于1987年,开放全部源代码给大学教学和研究工作。2000年重新改为BSD授权,成为自由和开放源码软件。因为AT&T的政策改变,在Version 7 Unix推出之后,发布新的使用条款,将Unix源代码私有化,在大学中不再能使用Unix源代码。教授为了能在课堂上教授学生操作系统运作的实务细节,决定在不使用任何AT&T的源代码前提下,自行开发与Unix兼容的操作系统,以避免版权上的争议。他以小型Unix(mini-Unix)之意,将它称为Minix。Minix没有任何代码抄袭Unix,所以它们之间并没有任何继承关系,Minix作为当时有史以来的第一个开源的操作系统放到网上以后,短期之内得到了飞速发展,大量的人进行下载学习。
1988年:11月2日,由 23岁研究生罗伯特.莫里斯(R.T.Morris)编制的“蠕虫”病毒在互联网上大规模发作,这也是互联网第一次遭受病毒的侵袭,从此,计算机病毒逐渐传播开来。
1989年:4月10 日,英特尔公司在拉斯维加斯电脑大展上首度发表集成有120万晶体管的486处理器。
4月,华硕(ASUS)公司在台湾成立。
11月,SoundBlast Card声卡正式发布。
1990年:苹果公司联合Motorola和IBM公司一同开发了基于RISC结构的微处理器PowerPC,为的就是能够同Intel公司的X86系列处理器相抗衡。
3月24日,因患癌症,王安病逝于美国马萨诸塞州立总医院。
5月5日, 纽约地方法院正式开庭,判处88年“蠕虫”病毒制造者莫里斯3年缓刑,罚款1万美元和400小时公益劳动。
5月22日,微软宣布推出Windows 3.0操作系统,并在年底创下销售100万套的纪录。当时的Windows 3.0操作系统提供了对多媒体,网络等众多最先进技术的支持,从而被成为软件技术的一场革命。
1991 年:2月1日,杰.维尔伯(Jay Wilbur),约翰.卡麦克(John Carmack)、约翰.罗米洛(John Romero)、亚德利安.卡麦克(Adrian Carmack)以及汤姆.豪尔(Tom Hall)共同创办了id Soft公司。约翰.卡麦克是公司的首席技术领袖,负责游戏引擎的设计;约翰.卡麦克是首席关卡设计师以及游戏设计,亚德利安.卡麦克是首席美术设计,汤姆.豪尔是公司的主要游戏设计师。
10 月5日,来自芬兰的大学生Linus.Torvalds开发出了一种基于UNIX的操作系统-Linux,并且将0.02版源代码全部公开于互联网上,从而引发了席卷全世界的源代码开放运动,Linux本身在经过全世界无数程序员的改进后也逐渐成长为一个成熟的操作系统,并在全世界逐渐的流行开来。Minix在内核设计上采用微内核的原则,但Linux则和原始的Unix相同都采用宏内核的概念。在Linux发展之初,双方还于1992年在新闻组上有过一场精彩的理念争论。Minix的作者和支持者认为Linux的单内核构造是“向七十年代的大倒退”,而Linux的支持者认为Minix本身没有实用性。
Apple、Motorola、IBM共同签署了一项协议,将联手开发PowerPC芯片和基于该处理器的PC系统,从而开始了PC历史上不同架构间的第三轮较量。
1992年:Internet协会成立,简称(ISOC)
4月,微软推出了Windows 3.1,在这个版本中Windows具有了对象嵌入与链接,并进一步完善了对网络和多媒体等技术的支持。8月18日,王安电脑公司正式向美国联邦法院申请破产保护。9月,威胜(VIA)在台湾成立。
1993年:美国总统克林顿在加州报告中正式提出了组建国家信息基础设施(NII)的构想,这就是后来的信息高速公路计划。
1月,nVidia公司在美国的圣克拉拉正式成立。
3月2日,我国接入Internet的第一根专线,中科院高能物理研究所租用ATT公司的国际卫星接入美国斯坦福线性加速器中心的64K专线正式开通。
3月22日,Intel公司正式发布奔腾(pentium)处理器。初期发布的奔腾集成了300多万个晶体管,工作在60-66MHz,每秒钟可执行1亿条指令。
微软发布了Windows NT操作系统,这也是第一个不依赖于DOS 的视窗操作系统。
9月21日,王安公司宣布脱离破产法的保护。
12月10日,id Soft公司的FPS游戏作品《DOOM》正式提供下载。这款游戏也被更为计算机历史上最为优秀的作品,因为它第一次让玩家体验到了流畅的三维空间,而此时3D加速卡还没有问世,DOOM实现了一次巨大的技术飞跃。
1994年:3月,Linux 1.0发布,代码量17万行,当时是按照完全自由免费的协议发布,随后正式采用GPL协议。至此,Linux的代码开发进入良性循环,越来越多的人开始在自己的PC上尝试Linux操作系统。
3月,来自SGI公司的Scott Sellers、来自Mediavision的Gary Tarolli和Ross Smith三个技术工程师*550万美元的风险投资共同创立了3Dfx公司,拉开了3Dfx传奇的序幕。
9月,索尼/飞利浦发布了高密度CD碟片(HIGH-DENSITY CD)。这种高密度CD碟片就是现在被称为DVD-9(DS-SL)和DVD-18(DS-SL)格式碟片的始祖。
11 月7日,美国弗吉利亚林克伯格学院数学教授莱斯利(T.Nicely)发现了“奔腾”(Pentium)处理器在进行除法运算的时候会发生错误,这一消息瞬间传遍了互联网,在全世界引起了轩然大波。而12月12日,IBM更是宣布停止采用Pentium处理器。
12月20日,Intel总裁格罗夫举行新闻发布会向用户进行赔礼道歉,并宣布将无条件为所有提出要求的用户免费更换CPU。Intel用高达十亿美元的代价挽回了自己的声誉。
网景公司(Netscape)发布了Navigator浏览器0.9版,这是世界上第一款比较成熟的网络浏览器,轰动一时。但是这是一款名副其实的浏览器–只能浏览页面,浏览器无法与用户互动。比如你登录一个网站输入完用户名点击提交的时候。浏览器并不知道你是否输入了,也无法判断。只能传给服务器去判断。
网景急于解决浏览器与用户交互这个问题。当时解决这个问题有两个办法,一个是采用现有的语言,比如Perl、Python、Tcl、Scheme等等,允许它们直接嵌入网页。另一个是发明一种全新的语言。这两个选择各有利弊。第一个选择,有利于充分利用现有代码和程序员资源,推广起来比较容易;第二个选择,有利于开发出完全适用的语言,实现起来比较容易。到底采用哪一个选择,网景公司内部争执不下,管理层一时难以下定决心。就在这时发生了一件大事,
1995年Sun公司将Oak语言改名为Java,正式向市场推出。Sun公司大肆宣传,许诺这种语言可以"一次编写,到处运行"(Write Once, Run Anywhere),它看上去很可能成为未来的主宰。网景公司动了心,决定与Sun公司结成联盟。它不仅允许Java程序以applet(小程序)的形式,直接在浏览器中运行;甚至还考虑直接将Java作为脚本语言嵌入网页,只是因为这样会使HTML网页过于复杂,后来才不得不放弃。总之,当时的形势就是,网景公司的整个管理层,都是Java语言的信徒,Sun公司完全介入网页脚本语言的决策。 因此,Javascript后来就是网景和Sun两家公司一起携手推向市场的,这种语言被命名为"Java+script"并不是偶然的。
在1994年3月,将第一个完整的linux核心Version 1.0释出,并且造成目前的大流行。由于Linux kernel的发展是由虚拟团队所达成的,大家都是透过网络取得Linux的核心原始码,经由自己精心改造后再回传给Linux社群,进而一步一步的发展完成完整的Linux系统,至于Linus Torvalds是这个集团中的发起者。由于这个群策群力的缘故,Linus Torvalds将Linux定为同样造福大家的GNU授权模式!
1995年:3月,美国华裔青年杨致远和同在斯坦福大学的同学戴维.菲洛( David.Filo)共同创办了Yahoo公司。
5月,网景公司做出决策,未来的网页脚本语言必须"看上去与Java足够相似",但是比Java简单,使得非专业的 网页作者也能很快上手。 这个决策实际上将Perl、Python、Tcl、Scheme等非面向对象编程的语言都排除在外了。Brendan Eich被指定为这种"简化版Java语言"的设计师。他的设计思路是这样的:
(1)借鉴C语言的基本语法;
(2)借鉴Java语言的数据类型和内存管理;
(3)借鉴Scheme语言,将函数提升到"第一等公民"(first class)的地位;
(4)借鉴Self语言,使用基于原型(prototype)的继承机制。
所以,Javascript语言实际上是两种语言风格的混合产物----(简化的)函数式编程+(简化的)面向对象编程。 这是由Brendan Eich(函数式编程)与网景公司(面向对象编程)共同决定的。
6月5日, IBM以35亿美元巨资,�强行收购了莲花(Lotus)软件公司。莲花曾经是一家举世瞩目的软件巨头,它的代表产品为著名的办公软件Lotus-1-2-3。
8月16日,以Intel、HP、IBM等巨头为首的58家公司宣布,将在1995年底实现UNIX平台的统一。
8月24日,微软公司正式向全世界推出了划时代的Windows95操作系统。这次发布微软采用了全球各地同时发布的办法,并斥资5亿美元作为宣传费用,创下了软件宣传费用的历史之最,而Windows95的发布,也开创了一个全新的wintel联盟。
9月15日,欧、美、日10家制造公司达成协议,DVD光盘将包括视频和音频、只读和可写等全面解决方案。数据纪录采用东芝-华纳阵营的双面纪录法,数据读取采用索尼-飞利浦的单面方法,从此DVD制式之争以双方的妥协而正式告终。
11月1日,intel公司正式宣布推出Pentium Pro处理器,其最高速度达到了200MHz,内部集成有550万晶体管,每秒可执行4.4亿次指令。这就是我们后来称之为“高能奔腾”的新一代处理器。
11月6日,3Dfx发布了自己的第一款3D加速芯片:Voodoo,从而将人类第一次真正的带入了计算机3D世界的殿堂,以至于后来人们在描写此段历史的时候,均不约而同的写道:
“1995年11月6日,人类历史上最伟大的显卡Voodoo横空出世……”
11月13日,Apple、IBM、Matorola三家公司向业界发布《Poweer PC平台规范》,宣布了苹果公司的Power Macintosh平台和Windows等平台实现了全面的兼容。
12月4日,sun公司和Netscape公司联合发布了Java语言(Java Programming Language)的成熟版本-JavaScript。
Sun公司的Patrick Naughton的工作小组研发了Java语言,主要成员是James Gosling(詹姆斯·高斯林)。Sun公司将Oak语言改名为Java,正式向市场推出。Sun公司大肆宣传,许诺这种语言可以"一次编写,到处运行"(Write Once, Run Anywhere),它看上去很可能成为未来的主宰。
1996年:2月,sun公司正式对外发布了Java语言,比尔.盖茨认为:Java是有史以来最为卓越的编程语言。
5月20日,以IBM、Apple、Oracle、Netscape、SUN公司为首的第一次世界NC大会在旧金山召开。NC(Network Computer)即网络电脑,此概念是美国Oracle公司总裁伊利奥(Ellion)在95年初提出。
6月,Linux 2.0内核发布,此内核有大约40万行代码,并可以支持多个处理器。此时的Linux 已经进入了实用阶段,全球大约有350万人使用。
7月31日,id Software公司正式发布新一代FPS游戏《QUAKE》,从而奠定了自己在世界游戏界的地位。
10月,美国总统克林顿宣布使用一亿美元联邦资金启动新一代internet五年计划。
10月5日,71岁的巨型机教父西蒙.克雷(S. Cray)博士死于车祸。直至今天,巨型机依然在克雷创造的模式中不断发展。
10月28日,intel和微软共同发布了自己的NC(NetComputer)标准,该标准即简化的pc,仍然使用操作系统和本地硬件系统。
1997 年:1月9日,Intel推出了带有MMX技术的Pentium处理器。MMX是英文MultiMedia eXtension(多媒体扩展)的缩写,它主要包含:单指令多数据技术,借用寄存器,增加了57个MMX指令,并采用了新的数据类型。这也是 Intel公司对X86微处理器结构的一次重大扩充,它直接推动了电脑多媒体应用的发展。
4月6日, AMD公司抢在Intel发布PentiumⅡ之前发布了自己的 k6处理器,并且倚仗自身与PentiumⅡ不相上下的性能而获得了极大的成功。
5月7日,Intel发布了PentiumⅡ处理器。业界评论家一致认为,这款芯片不是简单的升级,而是英特尔自推出“奔腾”以来最重要的新品。“奔腾Ⅱ成功地实现了0.25微米新工艺,它内置多媒体(MMX)功能,并采用了双重独立总线结构。
5月11日,由IBM 研制的超级计算机“深蓝”第一次战胜了国际象棋特级大师卡斯帕洛夫。
8月11日,曾经是世界十大 PC品牌之一的AST公司宣布自己已成为韩国三星电子的全资子公司,从而也宣布了AST的灭亡。
1998年:1月26日,康柏公司宣布收购DEC公司,收购价格为96亿美元。DEC公司曾经在小型机时代拥有对市场的绝对统治地位,康柏将其收购后,将使自己一举成为世界上仅次于IBM的第二大计算机公司。
2月,以Eric Raymond为首的一批年轻的"老牛羚骨干分子"终于认识到GNU/Linux体系的产业化道路的本质,并非是什么自由哲学,而是市场竞争的驱动,创办了"Open Source Intiative"(开放源代码促进会)"复兴"的大旗,在互联网世界里展开了一场历史性的Linux产业化运动。
4 月,Intel推出了440BX芯片组,关于这款芯片组我想已不用再做过多的解释,无论是它近乎完美的兼容性,还是至今无人能出其右的内存执行效率,都让许多老一代的DIYer念念不忘,而这款芯片组更是在当今快速更新换代的市场中存在长达3年之久,更是创造了一个不朽的神话。
5月,美国司法部以及德馑萨斯等20个州对微软公司正式提起反垄断诉讼,指控微软利用自身在操作系统市场中的垄断地位,通过捆绑销售等手段不正当排挤Netscape等竞争对手。
5月5日,intel宣布投资5000万美元成立中国研究中心。
6月1日,AMD公司推出了K6-2处理器,并使用低价策略处处紧逼intel公司。
6月25日,身处美国司法部反垄断案困扰中的微软公司发布了其最新的计算机操作系统Windows 98,并且不顾司法部的极力反对而在系统中同样捆绑了IE浏览器。
8月15日,已经逐渐被世人淡忘的苹果电脑公司突然推出了iMac电脑,这台拥有梦幻造型的电脑不但马上引起了世界的轰动,更是将苹果公司从亏损的深渊中拉了出来。
8月24日,intel推出了装有二级高速缓存的赛扬A处理器,这就是日后被众多DIYer捧上神坛的赛扬300A。
11月1日,美国铱星公司成立,该公司通过由66颗卫星组成的铱星系统,首次实现了能从地球的任何地点进行连接的服务。同日,美国数十家电视台在23个大城市正式播出数字式电视节目,这也标志着数字电视时代的到来。
11月5日,微软中国研究院在北京正式成立。
11月24日,美国最大的internet服务提供商AOL宣布将以价值42亿美元的股票收购Netscape(网景)公司。
1999 年:2月26日,Intel公司推出了PentiumⅢ处理器,PentiumⅢ采用了和PentiumⅡ相同的Slot1架构,并增加了拥有70条全新指令的SSE指令集,以增强3D和多媒体处理能力。最初时钟频率在450MHz 以上,总线速度在100MHz 以上,采用0.25μm工艺制造,集成有512KB或以上的二级缓存。
4月26日,台湾学生陈盈豪编写的CIH病毒在全球范围内爆发,近100万台左右的计算机软硬件遭到不同程度的破坏,直接经济损失达数十亿美元。
5月10日,id Soft推出了《QuakeⅢ》的第一个测试版本,此后的时间中,《QuakeⅢ》逐渐确立了FPS游戏竞技标准,并成为了计算机硬件性能的测试标准之一。
6月23日,AMD公司推出了采用全新架构,名为Athlon的处理器,并且在CPU频率上第一次超越了Intel公司,从此拉开了精彩激烈的世纪末处理器主频速度大战。
9月1日,Nvidia公司推出了GeForce256显示芯片,并提出了GPU的全新概念。
9月21日,中国台湾省发生强烈地震,造成芯片价格疯狂飙升。
10月25日,代号为Coppermine(铜矿)的PentiumⅢ处理器发布。采用0.18μm工艺,内部集成了256KB 全速L2Cache ,内建2800万个晶体管。
2000年:1月1日,全世界都在等待,呵呵,千年虫并没有爆发。2月17日,美国微软公司正式发布Windows2000。
3月4日,SONY公司的PlayStation2游戏机正式在日本上市。
3月16日,AMD公司正式推出了主频达到1GHz的“Athlon”处理器,从而掀开了GHz 处理器大战。
3月18日,Intel公司推出了自己的1GHz Pentium3处理器。
同一天,资产高达50亿美元的铱星公司宣告破产,公司全面终止其铱星电话服务。五角大楼最终获得了铱星的使用权,但用途至今未知。
4月27日,AMD公司发布了“毒龙”(Duron)处理器,开始在低端市场向Intel发起冲击。
5月14日,名为“I LOVE YOU”(爱虫)的病毒在全球范围内发作,仅用三天的时间就造成全世界近4500万台电脑感染,经济损失高达26亿美元。
9月14日,微软正式推出了面向家庭用户的windows千僖年版本Windows Me,同时这也是微软最后一个基于DOS的操作系统。
11月12日,微软宣布推出薄型个人电脑Tablet PC。
11月20日,Intel正式推出了Pentium4处理器。该处理器采用全新的Netburst架构,总线频率达到了400MHz,并且另外增加了144条全新指令,用于提高视频,音频等多媒体及3D图形处理能力。
12月14日,3dfx宣布将全部资产出售给竞争对手Nvidia,从而结束了自己传奇般的历史。
Microsoft公司的Anders Hejlsberg(安德斯·海尔斯伯格)发明了C#(C Sharp Programming Language),他也是Delphi语言之父。
2001年:1月,Linux 2.4发布,它进一步地提升了SMP系统的扩展性,同时它也集成了很多用于支持桌面系统的特性:USB,PC卡(PCMCIA)的支持,内置的即插即用,等等功能。
2月1日,世嘉宣布退出游戏硬件市场。
3月26日,苹果公司发布Mac OS X操作系统,这是苹果操作系统自1984年诞生以来首个重大的修正版本。
6月19日,Intel推出采用“Tualatin”(图拉丁)内核的P3和赛扬处理器,这也是Intel首次采用0.13微米工艺。
9月4日,惠普宣布将使用250亿美元,用换股的方式收购康柏,整个收购将在2002年上半年完成。
9月11日,美国遭受恐怖袭击,全球经济遭受影响,并波及到了本已不景气的IT产业,几日后纳斯达克指数1500点大关失守。
10 月8日,AMD宣布推出Athlon XP 系列处理器,新处理器采用了全新的核心,专业3D Now!指令集和 OPGA(有机管脚阵列)封装,而且采用了“相对性能标示”(PR标称值)的命名规范,同时该处理器极为优异的性价比使得Intel压力倍增。
10月25日,微软推出Windows XP操作系统,比尔.盖茨宣布:“DOS时代到此结束。” Windows XP的发布,也推动了身处低潮的全球PC硬件市场。
11月15日,微软推出XBOX游戏机,售价299美元。
2002 年:2月5日,Nvidia发布GeForce 4系列图形处理芯片,该系列共分为Ti和Mx两个系列,其中的 GeForce4 Ti 4200和GeForce 4 MX 440两款产品更是成为市场中生命力极强的典范。
2月26日,西捷公司推出了全球首款Serial ATA接口硬盘。
5月13日,沉寂多时的老牌显示芯片制造厂商Matrox正式发布了Parhelia-512(中文名:幻日)显示芯片,这也是世界上首款512bit GPU。
7月17日,ATI发布了Radeon 9700显卡,该显卡采用了代号为R300的显示核心,并第一次毫无争议的将Nvidia赶下了3D性能霸主的宝座。
11月18日,Nvidia发布了代号为NV30的GeForce FX显卡,并在该产品上首次使用了0.13微米制造工艺,由于采用了多项超前技术,因此该显卡也被称为一款划时代的产品。
2003年:1月7日,Intel发布全新移动处理规范“迅驰”。
2月10日,AMD发布了Barton核心的Athlon XP处理器,虽然在推出后相当长的一段时间内得不到媒体的认可,但是凭借超高的性价比和优异的超频能力,最终Barton创造出了一个让所有DIYer无限怀念的Barton时代。
2月12日,FutureMark正式发布3Dmark 03,但是由此却引发了一场测试软件的信任危机。
4月22日,AMD发布了面向服务器市场的64位处理器Opteron。
9月23日,在连续跳票达一年多之久后,AMD第一次脱离Intel制定的指令集架构,正式发布面向桌面级用户的64位处理器Athlon 64和Athlon 64 FX。
12月,Linux 2.6版内核发布,相对于2.4版内核2.6在对系统的支持都有很大的变化。
2004年1月,SuSE嫁到了Novell,SCO继续顶着骂名四处强行“化缘”, Asianux, MandrakeSoft也在五年中首次宣布季度赢利。3月,SGI宣布成功实现了Linux操作系统支持256个Itanium 2处理器。

二、AOS方案规划

简易操作系统AOS目标:小于5千行代码量,AOS除了代码量较小外、各方面性能远超linux、windows。编写OS、参考资料较多的有UNIX和linux,以下为linux各种版本的源代码行数:
Linux0.0.1版源代码,最早一个版本的linux,1991年、共约8000多行代码。
Linux 0.99的代码大约有十万行。
Linux1.0发布,1994年3月、代码量约17万行。
Linux 2.0内核发布,1996年6月、此内核有大约40万行代码。
Linux2.4内核发布,2001年元月、此内核有大约400万行代码。
Linux版本2.6.27,2008年、此内核有大约1100万行代码。分析发现实际只有6,399,191行源代码,因为这个计数程序没有计算空白行、注释和其它输入的信息。其中:驱动程序3,301,081、架构1,258,638、文件系统544,871、网络376,716、声音356,180、Include320,078、内核74,503、内存管理36,312、密码学32,769、安全25,303、其它72,780 。可以看出,arch和drivers所占的比重是相当大的。
Linux3.0内核发布,2011年7月、此内核有大约1500万行代码。
Linux 4.20内核发布,2018 年、此内核有大约2600万行代码。
2020年1月统计,Linux内核Git源码树中的代码达到了2780万行。

Windows 95只有1500万行代码,Windows 98有1800万行代码,Windows XP有3500万行代码,Windows Vista则达到了5000万行代码,其它方面,如集成的驱动程序,也比Windows XP几乎倍增(Windows Vista集成了19500个驱动程序,而Windows XP只集成了10000个驱动程序)。

1、简化Linux代码量

如果代码量使得一个人无法在半年内完成清晰阅读,我认为算是失败品。但或许对老外来说,他们是一个团队算“一个人、一条龙”,代码量再多、分而治之也是无所谓;而对于中国人来说,或许一个人是一条龙、一个团队却是一条虫,个人阅读超多的代码量、是很痛苦的事情。

如果不计算空白行、注释和其它输入的信息,估计Linux代码量从2780万行变为约1600万行。驱动程序 + 架构 + 网络 + 包含 + 声音 + 密码学、占比约88%、约1408万行,网络、声音、密码学,可归类为设备或虚拟设备;如果Linux集成了约2万个驱动程序,AOS中实际才用到100多个驱动程序,那AOS的对应的设备驱动程序代码量只是不到10万行了。文件系统占比约8.5%、136万行,AFS文件系统做了许多简化和性能的提高、如果AOS中的VFS只包含支持NTFS和FAT32,预计可以减少15倍的代码量、也就不到10万行了。内核 + 内存管理 + 安全 + 其它、占比约3.5%、56万行,新式的简洁调度方案、更为合理简单的权限管理、统一的四方兽磁盘和内存空间分配方案,预计可以减少10倍的代码量、也就不到6万行了。如果我只能看个半懂的概念,或感觉有点过于复杂的没多少作用的概念,AOS就会取消掉、从而大幅度减少代码量。之所以取消不少“概念”,那是因为要减少它们引起的大量烦恼。AOS追求的是“简单、高效”,不符合者则取消。当然“功能”不会少,性能还要求更高,而至于一些无关大事的可有可无小细节、不要也罢。这26万行代码量,采取下列措施、预计可以减少100倍的代码量、也就不到3千行了(只是粗略估计)。
⚫ Linux的万千结构在AOS中归一为内存v节点,进程、线程、网络连接、加解密、文件i节点、设备、虚拟设备、用户环境、等等,都是反映为内存v节点。简化“类和对象”的描述,去除Kobject内核对象、kset等等的大量结构环复杂设备表述(那不是业余玩家看的、是砖家叫兽的东东)。大幅度减少结构种类,尽可能规范统一到v节点结构。不管是什么样的v节点对象,都有相同的释放方法、也就几条指令;v节点也都映射到虚拟内存的共享内核空间(/proc,通常用户进程只读),用户进程都可以读或显示(物理内存的一半用于内核空间、映射到虚拟内存高处,另一半用于用户进程的虚拟内存空间),这样最少可压缩代码量2.5倍。
⚫ 系统资源“私有化”,具体为、动态分配到每一个CPU核,分工合作、大大减少竞争和并发。“私有化”后、CPU串行化处理不存在并行,也就不会遇到同步、互斥等问题,大量的各种复杂锁操作代码被去除,这样最少可压缩代码量4倍。
⚫ 因为系统资源“私有化”,许多概念被“弱化”、其大部分功能可以去除或被归并。是故,AOS去除“信号、信号量”概念及其相关代码,共享内存、管道(Pipe)、等功能归并到消息中断模式的IPC;取消“循环双向链表、队列、中断优先级”概念,中断概念也归并到IPC;取消linux命名空间方案,复杂也没多少作用,因为已有MMU(Memory Management Unit)虚拟内存管理来做进程隔离;取消ACL文件权限,增加一个指定用户权限,取消有效用户UID和GID,取消set_user_ID、set_group_ID,采用新式的权限管理方案;进程组、会话组的功能归并到用户主组中,没必要独立;监控文件事件inotify机制,用file status文件状态变量取代。Linux系统调用约250个(有些操作系统系统调用多达1000个以上),AOS系统调用控制在约50个。这样最少可压缩代码量10倍。

2、IPC消息包结构

IPC(Internal Process Communication)进程间通信模式:报文message、消息队列queue(链表),信号signal(软硬中断),信号量semaphore(睡眠锁、交通信号灯),管道pipe、有名管道,共享内存、指针提交(类似于信号量),套接字socket。AOS的IPC会简单许多,AOS去除“信号、信号量、等等”概念及其相关代码;去除并非是不存在了,而是归并到IPC消息包结构中;因为系统资源“私有化”,AOS无需代码去实现相关功能;但可以在用户服务器进程或线程中实现相关功能,AOS只是提供机制。本质上,无论设备的硬件中断或者软中断、都可以看作是一种信号signal,AOS也是将信号signal归并到IPC消息包结构中;IPC消息包有无数的消息类型、通信协议,用户进程可以灵活应用,但AOS也只是实现极少数的通信协议。简单说:
用户程序可以灵活实现各种复杂的IPC应用,AOS只是按照内核需要而实现几种简洁的IPC功能,AOS只是提供机制!

IPC消息包类型:
⚫ 用户进程与内核之间的IPC消息(2w):通信协议1b、系统调用号1b,系统调用syscall()(目标为内核CPU的线程号2b、源为用户进程号线程号1w、通信协议0),系统调用返回应答(目标为用户进程号线程号1w、源为内核CPU的线程号2b、通信协议1)。
⚫ 内核与内核之间的IPC消息(2w):通信协议1b、系统调用号1b、附加通信参数2b,内核调用(目标为内核CPU的线程号2b、源为内核CPU的线程号2b、通信协议2)。内核调用返回应答(目标为内核CPU的线程号2b、源为内核CPU的线程号2b、通信协议3)。
⚫ 用户进程与用户进程之间的IPC消息(3w或4w):通信协议1b、系统调用号1b、附加1通信参数2b、或许有附加2通信参数1w,通信地址(目标为用户进程号线程号1w、源为用户进程号线程号1w、通信协议4)。
⚫ 中断控制器节点到内核线程的IPC消息(2w):通信协议1b(5)、中断号1b,目标为内核CPU的线程号2b,中断相关描述1w。
⚫ 中断控制器节点到用户进程线程的IPC消息(2w):通信协议1b(6)、中断号1b,中断相关描述2b,目标为用户进程号线程号1w。

⚫ CPU节点到L3高速共享内存的读写(2w):通信协议1b(7)、读写处理号1b,目标为高速共享内存的48位地址6b。
⚫ CPU节点到中断控制器节点内部寄存器的读写(2w):通信协议1b(8)、读写处理号1b,目标为中断控制器节点内部寄存器的48位地址6b。
⚫ CPU节点到开关矩阵的总线桥(包含DDR主内存控制器、DMA、外部设备接口、等等)的读写(2w):通信协议1b、读写处理号1b(9),目标为主DDR内存或外部设备的48位地址6b。

IPC消息包结构:

struct msg {u8 cpudno;   // 目标CPU节点地址。u8 cpusno;     // 源CPU节点地址。u8 msg_sys_type;    // 消息体系类型(或说体系协议簇),AOS体系 = 0。u8 msg_flag_len; // 消息数(低2位)和高6位标志。u32 msg_array[7];   // 消息数组。
};
msg_flag_len.bit7   bus_request // 256位内部总线“自旋锁”请求、为1,0否。
msg_flag_len.bit6   bus_ask     // 256位内部总线“自旋锁”应答,为1允许锁住并操作总线,0否。
msg_flag_len.bit5   bus_state       // 256位内部总线“自旋锁”状态,为1空闲,0总线已经锁住在使用。
msg_flag_len.[4:2]  msg_model   // IPC消息包类型(通信模式)。
msg_flag_len.[1:0]  msg_len     // 消息数。

3、多核处理器256位内部总线和APIC

对称多处理SMP(Symmetric multiprocessing)节点集成到同一芯片内,各个处理器CPU并行、执行不同的线程或进程;每个处理器核心拥有私有的一级Cache(高速缓存L1-I、L1-D),共享二级Cache高速缓存L2,所有总线节点(处理器CPU节点、被动节点)共享三级Cache高速缓存L3。SMP是一个操作系统的实例可以同时管理所有CPU内核,且应用并不绑定在某一个CPU内核。AOS将任务队列对称地分布于多个CPU之上,从而极大地提高了整个系统的数据处理能力。所有的中央处理器CPU(Central processing unit)都可以相互通信、平等地访问内存、I/O和外部中断。Non-Uniform Memory Access(NUMA)架构,每个处理器拥有自己的内存,访问共享内存时具有不同的访问延迟。传统微处理器中,Cache不命中或访存事件都会对CPU的执行效率产生负面影响,而总线接口单元(BIU)的工作效率会决定此影响的程度。当多个CPU核心同时要求访问内存或多个CPU核心内私有Cache同时出现Cache不命中事件时,BIU对这多个访问请求的仲裁机制以及对外存储访问的转换机制的效率决定了SMP系统的整体性能。因此寻找高效的多端口总线接口单元(BIU)结构,将多核心对主存的单字访问转为更为高效的猝发(burst)访问;同时寻找对SMP处理器整体效率最佳的一次Burst访问字的数量模型以及高效多端口BIU访问的仲裁机制将是SMP处理器研究的重要内容。

SMP处理器的各CPU核心执行的程序之间需要进行数据共享与同步,因此其硬件结构必须支持核间通信。多核处理器之间需要通过中断方式进行通信,必须具有较低的通信延迟。图1中、假设256位内部总线操作频率为2GHz,或说IPC消息包传输速度是2GHz。当总线上有多个CPU节点并行操纵总线时,任一个瞬间、只有其中一个CPU节点可以得到总线操作权限,其它节点只能“原地自旋”等待;等待的时间极短、ns级,一旦总线空闲释放、则再次参与总线竞争。占住总线的CPU节点得有一个“度”,通常传输一次IPC消息包、就会让出总线。如果CPU节点在“傻傻”地自旋等待总线或资源操作,可以采用超线程HT(Hyper-Threading)技术(在单个CPU核心处理单元中集成两个逻辑处理单元,有各自独立的处理器状态、两个逻辑内核,在一颗CPU同时执行多个程序而共同分享一颗CPU内的资源,理论上像两颗CPU一样在同一时间执行两个线程),内部硬件切换CPU到另一个线程执行。256位内部总线除CPU节点外,还有3个被动节点:可编程外设中断控制器APIC(Advanced Programmable Interrupt Controller),三级L3高速共享缓存,256位内部总线到64位总线开关矩阵的总线桥(包含DDR主内存控制器、DMA、外部设备接口、等等)。APIC收集各个外设的中断,并翻译成总线上的message,传递给某个CPU节点;APIC会开放一些寄存器让CPU访问、控制,以装配内核线程或用户进程或线程之设备中断。

有多少个用户进程CPU节点,就会有多少个用户进程队列;AOS中最大32K个用户进程,至于哪一个CPU管理哪一个用户进程队列、或哪一个进程归属于哪一个队列,是由“时间管理员”动态分配的。对于多核CPU,优化操作系统任务调度算法是保证效率的关键,一般任务调度算法有全局队列调度和局部队列调度。前者是指操作系统维护一个全局的任务等待队列,当系统中有一个CPU核心空闲时,操作系统就从全局任务等待队列中选取就绪任务开始在此核心上执行。这种方法的优点是CPU核心利用率较高。后者是指操作系统为每个CPU内核维护一个局部的任务等待队列,当系统中有一个CPU内核空闲时,便从该核心的任务等待队列中选取恰当的任务执行,这种方法的优点是任务基本上无需在多个CPU核心间切换,有利于提高CPU核心局部Cache
命中率。目前多数多核CPU操作系统采用的是基于全局队列的任务调度算法。AOS是“时间管理员”(Time Administrator)动态分配用户进程队列的CPU节点,新建的进程,Tadm会根据各个CPU用户进程队列的有效线程数、按照均衡原则分配新进程到相应的CPU用户进程队列中去;滴答时间(通常是10ms)到的广播中断,各个用户进程队列的CPU会根据其任务就绪队列的动态优先级进行进程(主线程)的线程调度。用户进程在某时间段,其用户进程资源(包括相应设备和中断、DMA等)只属于Tadm进程调度所指定的CPU。系统资源“私有化”,具体为:大部分的设备等内核资源为五行内核CPU所瓜分(内核也许只是一个CPU核,五行要素相应为五个内核线程),用户进程队列所属资源为相应的用户CPU管理;分工合作、大大减少竞争和并发。“私有化”后、CPU串行化处理不存在并行,也就不会遇到同步、互斥等问题,大量的各种复杂锁操作代码被去除。

中断机制也部分归并到IPC消息包结构中,不再需要中断优先级概念,也没必要为每个进程线程建立独立的内核栈。每个CPU拥有私有的一级Cache(高速缓存L1-I、L1-D)、二级Cache高速缓存L2,CPU对L1和L2的读写操作是最快的;每个CPU在L1或L2中建立一个内核栈(4kb),是最为合理和快速的。所以,一个用户进程队列共用其所属CPU的4kb内核栈;当CPU节点在用户进程空间接收到IPC消息包而中断时,CPU保存用户进程的线程之上下文到相应的用户进程之线程栈(用户进程最少有一个主线程,每个用户线程栈通常是8Mb虚拟内存空间),切换栈指针为内核栈从而进入内核空间处理IPC消息包;CPU在内核空间处理IPC消息包时,同样可以自动接收更多的IPC消息包、但不会是可重入中断处理,CPU的L2有4kb的IPC消息包循环接收缓冲区。中断上半步快速处理所有消息,在处理完所有中断消息后、用户CPU处理中断下半部(32个CPU所属内核线程、软中断、工作队列、tasklet),最后调度(抢占式调度)最高的动态优先级之进程的线程,从而回到相应用户进程的线程空间运行、等等。当用户进程的线程阻塞(通常是中断发送IPC消息包)、让步另外的进程线程时,或者滴答时间(通常是10ms)到的广播中断,用户CPU都要重新运行调度程序。CPU进入内核空间处理所有IPC消息包完成后,才会清中断,在准备进入用户进程空间时、还需再看一下是否有新的IPC消息包中断。

CPU号8位CID,16位进程号PID,16位线程号TID(一个进程最大64K个线程),8位中断号IRQ(每个级联的IRQ关联到多个设备v节点号、再关联到PID、从而CID),进程初始化安装IRQ关联的设备v节点号。将系统资源划分为“木、火、土、金、水”五类,以减少竞争和并发;每个进程都运行在自己的虚拟“时空”中、各不相干,进程间通过IPC消息包中断来通信,AOS的0号进程为内核进程(有五类基本线程、管理较多的外设)。分为多个CPU队列,设备中断和进程间通信中断、以及中断后的调度由各队列CPU来处理。0号(内核)进程容器关联的系统资源最多,其它进程容器常需要与其通信、利用内核的5类CPU性能来实现相关功能(也即是常说的系统调用),这里是IPC消息通信实现。用户进程容器并非是实现系统调用代码的执行者、而是内核CPU实现系统调用功能,进程容器只是陷入内核后发消息给内核CPU,内核CPU完成相关功能后发消息回给进程容器CPU、之后中断处理、调度。

APIC有3种timer:
a、Real Time Clock(RTC)实时时钟RTC。
b、Programmalbe Interval Timer(PIT)可编程间隔定时器PIT。
c、Time Stamp Counter(TSC)时间戳计数器TSC。
TSC(96位时间戳,1970年1月1日至今的秒数64位、32位纳秒级时间戳)和RTC(96位墙上时钟,年、月、日、时、分、秒、星期),b项中有许多硬件间隔定时器设备供用户进程选用,其中一个64位滴答jiffies(通常是10ms)时钟为调度所用。TSC、RTC、jiffies这三者都是全局变量内部总线时钟,内容在L3高速共享缓存,映射到虚拟内存共享区域,所用的进程线程皆可读取。滴答时间(通常是10ms)到的广播中断、由APIC写到所有的CPU节点。


三、AOS方案规划

一个CPU核最少包含系统指令、跳转指令、ALU指令和存储访问单元SAU指令。ARM的系统指令数太多,不利于使用汇编语言。如果对特殊功能寄存器(程序状态寄存器PSR(包含应用程序 APSR、中断号 IPSR、执行 EPSR),系统控制寄存器CONTROL)的访问也归于使用ALU的MOV指令、等等。是故,CPU核也称算术逻辑单元ALU(Arithmetic Logical Unit)。ALU汇编语言就会很简洁,只有6 + 3 + 18 = 27条指令束(包含跳转指令、ALU指令(含系统指令)和SAU指令)。

1、跳转指令类型(3条):Opcode {Cond}  Label;   Opcode {Cond}  Rm; 
B{Cond} label; (无)条件跳转(相对跳转范围:±32MB)。
B{L}{X}{Cond} label|Rm; (无)条件带链接(交换)的跳转(相对跳转范围:±32MB)。
TB<B|H> [Rn,  Rm]; 表跳转字节或半字。在这里,Rn 指向跳转表的基址,Rm 则给出表(数组)中元素的下标。
以下3条指令已经被IPC消息包中断处理代替。
// BKPT(breakpoint):断点,BKPT  #immed;  预取中止或进入调试状态。 ARM指令中immed编码为 16 位的位域。
// SVC(Supervisor call):超级用户调用异常,SVC {Cond} #immed;  ARM指令中immed编码为 24 位的位域。 以前为 SWI。
// SMC(Secure Monitor Call):安全监控调用,SMC {Cond} #imm16;  指令中编码为 16 位的位域。 以前为 SMI。

2、存储器访问指令类型(6条):存储访问单元SAU(Storage access unit)。

加载或存储独占的指令为需要实现对存储器访问的“读-修改-写”情形下的原子操作(无需关中断实现),可以在系统控制寄存器CONTROL的某位设置独占标志(独占标志置1禁止中断、之后连续执行多条指令、独占标志清0开中断)。连续指令组实现“原子操作”、但不宜过多的指令数,会耗去许多时间,影响其它进程和中断的运行;如“读-修改-写”最少要三条指令,读和写都要DDR内存访问周期。是故,AOS的“私有化”将大为减少连续指令组的编程机会。
1)、加载或存储字、字节、半字、双字。LDR(from memory Load  to Register),STR(from Register Store To memory)
2)、预载数据或指令:Opcode = PLD(Preload Data),= PLI(Preload Instruction)
LDR{D}{size}{T} Rd, {[Rn], Operand2}{[Rn{, Operand2}]}{!};  
STR{D}{size}{T} Rd, {[Rn], Operand2}{[Rn{, Operand2}]}{!};  
PLD [Rn {, Operand2}];  
PLD label;  
PLI [Rn {, Operand2}];  
PLI label;  
其实这6条指令只是硬件装配成一个相应的IPC消息包而已。

3、算术逻辑单元ALU(Arithmetic Logical Unit)指令(18条):
编写操作系统,很少使用有(无)符号相关的指令、或说不用带“符号位”的操作数。ALU单元的指令数也就16条,加减、逻辑、MOV;使用补码逻辑,减法运算等效于加法运算。ALU的指令写法:Opcode {S} {Rd}, Rn, Operand2;  Rd = Rn  Opcode  Operand2。正数的补码是自身,负数的补码是“取反加1”。SUB{S} {Rd}, Rn, Operand2; Rd = [Rn]补 + [- Operand2]补,或说减法等于加  [- Operand2]的补码。RSB逆向减法也就是Rd = [- Rn]补 + [Operand2]补,CMP(Compare)比较指令等、只是没有将结果存到Rd吧。

ADD{S} Rd, Rn, Operand2;   Rd = Rn + Operand2,加法。
ADC{S} Rd, Rn, Operand2;   Rd = Rn + Operand2 + C,带进位加法。
SUB{S} Rd, Rn, Operand2;   Rd = Rn + [- Operand2]补,减法。
SBC{S} Rd, Rn, Operand2;   Rd = Rn + [- Operand2]补 - !C,带进位减法。
RSB{S} Rd, Rn, Operand2;   Rd = [- Rn]补 + Operand2,逆向减法。
RSC{S} Rd, Rn, Operand2;   Rd = [- Rn]补 + Operand2 - !C,带进位逆向减法。
CMN  Rn, Operand2;    Rn + Operand2,与负数比较(负负为正)、据结果设置CPSR标志位。
CMP  Rn, Operand2;    Rn + [- Operand2]补,比较、根据结果设置CPSR的标志位。
AND{S} Rd, Rn, Operand2;   Rd = Rn AND Operand2,按位“与”。
ORR{S} Rd, Rn, Operand2;   Rd = Rn OR Operand2,按位“或”。
EOR{S} Rd, Rn, Operand2;   Rd = Rn EOR Operand2,按位“异或”。
BIC{S} Rd, Rn, Operand2;   Rd = Rn AND NOT Operand2,按位“与非”。
ORN{S} Rd, Rn, Operand2;   Rd = Rn OR NOT Operand2,按位“或非”。
TST Rn, Operand2;    Rn AND Operand2,位测试、并根据结果设置CPSR的标志位。
TEQ Rn, Operand2;    Rn EOR Operand2,相等测试、并根据结果设置CPSR的标志位。
MOV{S} Rd, Operand2;

MOV指令没有使用Rn,理论上可以有32个变种MOV指令。寻址32个寄存器,或说Rd、 Rn、Rm、Rs的寄存器寻址到32个,其中就会包含PSR和CONTROL寄存器;这样一来,就可取消系统指令组、将其包含到ALU指令组中。
MOV{S} Rd, Rm{,shift};  Rd = Rm{,shift}。
MVN{S} Rd, Rm{,shift};  Rd = NOT Rm{,shift}。
MOVT Rd, #imm16;  Rd[31:16] = imm16,Rd[15:0] 不受影响,imm16 的范围为 0-65535
MOV Rd, #imm16;  Rd[15:0] = imm16,Rd[31:16] = 0,imm16 范围为 0-65535
位域清零:BFC Rd, #lsb, #width;  Rd[ ( width + lsb - 1 ):lsb ] = 0,Rd 的其他位不受影响。
位域插入:BF Rd, Rn, #lsb, #width;  Rd[ ( width + lsb - 1 ):lsb ] = Rn[ ( width - 1 ):0 ],Rd 的其他位不受影响。

系统指令组:
MOV{S} Rd, PSR;  PSR程序状态寄存器到通用寄存器的数据传送指令。
MOV{S} PSR, Rm;  通用寄存器到PSR程序状态寄存器的数据传送指令。
BF PSR, Rn, #lsb, #width;  到程序状态寄存器指定位段的数据传送指令。
对系统控制寄存器CONTROL的位或位段操作有:
// CPSID禁用指定的中断,CPSIE启用指定的中断、等等,取消。
SETEND设置端序、为加载和保存设置端序,
SEV设置事件、向多处理器系统发送事件信号,
WFE等待事件,WFI 等待 IRQ、FIQ、不精确的中止或调试进入请求,
YIELD生成对其他线程的控制,
DBG调试提示、向调试系统及其相关系统发送提示,
DMB数据内存屏障、确保内存访问的观察顺序,
DSB数据同步屏障,确保内存访问完成,
ISB指令同步屏障、刷新处理器管道并跳转预测逻辑,
ISET指令组(Instruction set,连续执行多条指令),等等。

4、可伸缩向量运算单元SVCU(Scalable Vector calculations Unit):

向量操作类指令(可伸缩向量SVE指令集)包含:单指令多数据并行SIMD向量(vectormode)运算(Single-Instruction Multiple-Data)和标量floating-point(浮点)运算,基本的数字信号处理DSP(digital signal processing)指令集。
可伸缩向量单元SVU(Scalable Vector Unit):去除DSP、VFP的简化型SVCU(大幅缩减逻辑门数量),只有一些简单的SIMD向量整形操作指令;主要应用于存储访问的空间管理,如求256字节向量的最大值字节指令VMAX256和2K位图的从最高位起计算前导零数目指令VCLZ2K。空间分配算法为“四方兽空间分配算法,青龙粒、白虎骨,朱雀来、玄武出。”,包含单粒位图分配算法和“独狼空间连续粒度”分配算法。而常用的2K或64K单粒位图分配算法必须使用到“从最高位起计算前导零数目指令VCLZ2K”,64K 位图需循环32次指令VCLZ2K,而最终实现程序就几条指令吧。
关于移位的相关指令已经在Operand2和MOV指令实现了,可以忽略。27条基本指令外的其它指令,如DSP、并行加减算术运算、等等,应该放入SVCU单元来实现,尽量简化ALU结构。

简易操作系统OS方案规划相关推荐

  1. 智能驾驶操作系统OS

    智能驾驶操作系统OS 自动驾驶操作系统是一个流程化.复杂的综合系统,设计到众多流程和领域.首先,分为不同的层,包括:感知层.认知层.决策规划层.控制层和执行层几个层面. 自动驾驶操作系统是一个流程化. ...

  2. 国内操作系统OS分析(下)

    国内操作系统OS分析(下) 3.2 Android/iOS移动互联网时代 Android是一种基于Linux的自由及开放源代码的操作系统.主要使用于移动设备,如智能手机和平板电脑,由Google公司和 ...

  3. 国内操作系统OS分析(上)

    国内操作系统OS分析(上) 一.操作系统(OS)概述 操作系统(OS,Operating System),是管理.控制计算机软硬件资源的计算机程序,并为用户提供一个与系统交互的操作界面.OS是配置在计 ...

  4. 【王道】操作系统OS第二章进程管理(二[1])

    本笔记结合<2023王道操作系统考研复习指导>食用 操作系统OS第二章进程管理 本笔记结合<2023王道操作系统考研复习指导>食用 1.进程 1.1.进程的组成 1.1.1.P ...

  5. [入门篇]初识操作系统OS(这篇博客将帮你打开操作系统OS大门的第一步 超超超超超详细)

    目录 1.冯诺依曼体系 1.1冯诺依曼体系的构成 1.2 存储器-内存 1.2.1 为什么需要存储器(内存)的两个理由 1.3 冯诺依曼体系的重要性 1.4 一个生动的例子理解冯诺依曼体系运作 2. ...

  6. 浅谈操作系统OS与计算机软硬件体系结构,自顶贯穿性与行为回归硬件性

    操作系统OS与计算机软硬件体系结构 使计算机更好用! 这是操作系统的根本要义!! 操作系统这个概念基本上以后会讲一路的,今天的话就基本上讲一下轻量化的概念. 所以操作系统到底是什么?操作系统首先是软件 ...

  7. 天兔oracle,天兔(Lepus)监控操作系统(OS)安装配置

    天兔(Lepus)监控操作系统(OS)安装配置 监控和被监控端都要安装和配置snmp: [root@yoon]# yum install net-snmp* [root@yoon]# vi /etc/ ...

  8. 利用图文和代码深度解析操作系统OS的内存管理实现原理机制和算法

    利用图文和代码深度解析操作系统OS的内存管理实现原理机制和算法. 内存作为计算机系统的组成部分,跟开发人员的日常开发活动有着密切的联系,我们平时遇到的Segment Fault.OutOfMemory ...

  9. [学习总结]自制简易操作系统

    GITHUB:  https://github.com/trb331617/miniOS 运行效果: 实验环境: VMware Workstation 15 Pro; CentOS-7-x86_64- ...

最新文章

  1. 【神经网络】(19) ConvNeXt 代码复现,网络解析,附Tensorflow完整代码
  2. [python]两种编程思维--面向过程和面向对象
  3. 模拟jQuery构造对象
  4. linux用unzip解压.zip文件失败解决方案
  5. Debug javascript inside jsp page 调试jsp嵌入的js
  6. 使用.NET Core 编写端到端测试
  7. Redis pub/sub机制在实际运用场景的理解(转载)
  8. floquet端口x极化入射波_请问CST 2012 floquet中的模式设置
  9. MAC:一个数据缓冲区,作为参数传递到另外一个函数就崩溃
  10. 惯性导航技术, IMU, AHRS
  11. 【应用层】“世纪”大案之 我与网络地址的抗争
  12. rstudio安装后如何打开_请问Rstudio安装后无法运行怎么弄?
  13. python中mysqldb的用法
  14. C语言顺序结构(解决二元一次方程)
  15. 微信公众号助手android,微信团队发布微信公众号订阅号助手App
  16. POJ,ZOJ题目分类(多篇整合版,分类很细致,全面)
  17. 图片尺寸,分辨率和像素的理解
  18. Java面试资料个人整理
  19. LCD背光驱动 --Backlight
  20. 字节码文件魔数0xCAFEBABE

热门文章

  1. 三种显色方法ECL、NBT/BCIP和DAB的对比
  2. 通信专业考研就业专栏
  3. 用计算机解题前 需要将解题方法,算法及其表示方法
  4. win7 错误代码 0x490 解决方法
  5. 侍魂微信新服务器,侍魂手游2019年3月23日微信问答试炼答案
  6. Word 中利用“多级列表“功能实现章节标题自动编号
  7. Linux(centos7) 安装配置gitlab-runner
  8. 如何在微信中做好微信h5棋牌下载类推广防封防屏蔽?
  9. (数字IC)低功耗设计入门(七)——门级电路低功耗设计优化(续)
  10. linux grub 编辑器,KGRUBEditor: 可视化的 GRUB 编辑器