1>首先讨论各种微控制器与操作系统之间的关系
说到单片机,大家首先想到的是51单片机,对吗?是的,更先进的AVR被称为单片机,我们仍然认为它是可以接受的。然后是更高级的ARM7、8086、80386,Core i3,Athlon等,我们习惯于将它们称为CPU,因为在学习计算机原理时会这样称呼它们,但是根据单片机的定义,它们也属于单片机。这不是要怪所有人。中国的教育就是这样。它仅专注于告诉您它是什么,而不是它们之间的联系。上述类型的单片机或芯片(如果您仍然觉得不习惯将Core i3称为单片机),在原理上是相同的,即它们由算术控制器寄存器组成,并且不同之处在于它们的硬件电路实现方式不同。 ,数量不同,功耗不同,计算能力不同,但是它们都提供相同的基本功能。好的,最后让CPU找到组织,然后我将介绍为什么有些单片机需要操作系统,而有些在我们学习的过程中却根本没有操作系统。
51 / AVR微控制器在学习它们时,首先介绍它们拥有的资源-有一些寄存器,一些时钟等,然后介绍如何使用C或C以及汇编混合编程来使用汇编。 ????????????????????????????????????????????????????????? ????????????????????????????????????????????????????????? ????????????????????????????????????????????????????????? ????????????????????????????????????????????????????????? ????????????????????????????????????????????????????????? ????????????????????????????????????????????????????????? ????????????????????????????????????????????????????????? ????????????????????????????????????????????????????????? ????????????????????????????????????????????????????我们在这里使用的语言可以直接操纵硬件资源,因此我们可以决定何时使用哪个寄存器以及何时将寄存器的内容写入辅助存储器。
当ARM微控制器学习它时,我们可以将其随操作系统(例如MicroC / OS,iOSX,Android或其他自定义的linux操作系统)一起携带,但有时我们通常不让它随身携带该操作系统,但可以像51单片机一样直接操作它。
Core i3 / Athlon MCU(或CPU,如果您仍然不喜欢使用MCU描述如此出色的硬件)。您几乎没有听说过周围的人会在这种类型的MCU上开发应用程序(如果有的话,您必须推荐它)(我知道)。因为在此单片机上开发的应用程序具有非常强大的名称操作系统!由于这种单片机提供了太多的资源并且可以做太多的工作,因此我们需要专门的程序来对其进行管理,以避免重复开发相同功能。这样,我们可以摆脱硬件编程的束缚,而将更多精力放在应用程序级开发上。从某种意义上说,操作系统只是一个应用程序,但是有点特殊。

在这种情况下,最好做一个比喻-自行车和汽车。自行车非常简单,我们熟悉其组成和零件。如果链条掉了,我们完全有能力处理它。这就像一台51单片机。资源不多,因此我们可以充分利用它。相比之下,汽车要复杂得多,具有减速系统,制动系统,电子系统,空调系统等,但我们不需要知道其硬件的工作原理。我们需要知道按下哪个开关和按下哪个踏板。向上。这就像单片机上的操作系统。它不需要我们知道硬件的结构。如果要实现该功能,可以直接调用系统提供的API。在我们继续踩踏板并让自行车前进的动作中,我们清楚地知道了每个零件的操作原理和过程;但是如果您踩油门,汽车就会行驶。我认为大多数人都不知道涉及哪个部分以及每个部分的原理。但这并不能阻止我们使用它。
2> cpu与指令集之间的关系
cpu依靠指令来计算和控制系统。每个CPU指定一系列在设计过程中与其硬件电路相匹配的指令系统。换句话说,某个CPU的硬件设计实际上是某种指令集的一种指令集。硬件实现。指令集是所谓的目标代码(或机器代码,可以直接在CPU上运行的代码),可以视为需要cpu外部提供的功能。某个CPU的设计必须针对某个指令集。因此,不同的cpu体系结构也意味着其指令集与以前的指令集相比已经扩展,或者已经实现了全新的指令集。指令集中的一条指令允许cpu完成一系列动作,而动作的完成表示特定操作的完成。一个功能可能需要一个或几个指令才能实现。例如,汇编的MOV或LD语句可能对应于多个cpu指令。
下面介绍几种常见的CPU架构和指令集之间的对应关系(所谓的架构指的是硬件电路的实现):
Intel X86体系结构CPU可以实现多个指令集x86,x86-64,MMX,SSE,SSE2,SSE3,SSSE3,这些指令集中的指令使cpu执行的操作更加复杂,因此它也很复杂。叫做CISC
AMD amd64体系结构cpu与x86指令集兼容,并添加了3D-Now!指令集,以增强对3D显示的支持。
ARM ARMv1〜ARMv7体系结构CPU实现了Thumb指令集和ARM指令集。这些指令集中的一条指令使CPU可以相对简单地完成操作,因此也称为RISC指令集
3>指令集与操作系统之间的关系
我想回顾一下前面提到的两个概念:指令集机器码;操作系统应用程序
首先,我们需要知道计算机之父冯·诺伊曼(von Neumann)说过,计算机只能在二进制文件上运行。因此,操作系统和普通应用程序都必须先转换为二进制代码,然后才能由CPU处理。用高级语言编写的普通应用程序必须先由编译器编译为二进制代码(指令),然后才能运行。不同的CPU实现不同的指令集,因此对应于不同指令集的编译器也不同。编译器不同,并且在编译相同的高级语言程序之后获得的二进制代码也不同。这导致了“移植”和“跨平台”两个概念。好的,再试一次:cpu体系结构-指令集-编译器-程序相互交织,密切相关。因此,您将听到Windows操作系统只能在X86体系结构的CPU上运行,而不能在Power或ARM上运行。由于指令集不同,因此存在“ Wintel”联盟。因此,您还可以看到硬件制造商提供了一些编译器。例如,英特尔提供了C和C ++编译器,以便编译后的程序可以更好地利用硬件的性能。那么,为什么听到Linux可以在不同体系结构的CPU上运行呢?那是因为Linux是开放源代码,因此可以将其移植到不同的CPU平台,然后使用相应的编译器进行编译,您会获得可以在该CPU上运行的二进制代码。 Windows已关闭,没有可用的源代码,MS本身也没有计划移植到其他CPU平台的计划,因此,它当然只能在X86上运行。 (顺便说一句,X86也是性能最好的CPU之一,而Windows对性能的要求更高,所以MS当然不愿意移植它)
4> CPU指令分为两类
CISC是英文“ Complex Instruction Set Computer”的缩写,中文意思是“复杂指令集”。它指的是Intel生产的x86(英特尔CPU的命名约定)及其兼容的CPU(其他制造商,例如AMD,VIA等生产的CPU),它基于PC(个人计算机)体系结构。这种CPU通常是32位结构,因此我们也将其称为IA-32 CPU。 (IA:英特尔架构,英特尔架构)。目前,CISC CPU主要包括Intel服务器CPU和AMD服务器CPU。
RISC是英文“ Reduced Instruction Set Computing”的缩写,在中文中意为“精简指令集”。它是基于CISC(复杂指令集计算机)指令系统开发的。有人对CISC机器进行了测试,结果表明各种指令的使用频率有很大不同。最常用的是一些相对简单的指令,它们仅占指令总数的20%,但在程序中出现的频率却占80%。复杂的指令系统将不可避免地增加微处理器的复杂性,使得处理器的开发时间长且成本高。另外,复杂的指令需要复杂的操作,这势必会降低计算机的速度。基于上述原因,RISC CPU诞生于1980年代。与CISC CPU相比,RISC CPU不仅简化了指令系统,而且采用了所谓的“超标量和超流水线结构”,大大提高了并行处理能力。 (并行处理并行处理意味着一台服务器可以同时处理多个CPU。并行处理可以大大提高服务器的数据处理能力。部门级和企业级服务器应支持CPU并行处理技术)。换句话说,在相同频率下,具有RISC架构的CPU的性能要比具有CISC架构的CPU的性能高得多,这取决于CPU的技术特性。目前,该指令系统的CPU普遍用于中高端服务器,尤其是高端服务器均使用RISC指令系统的CPU。 RISC指令系统更适合高端服务器的UNIX操作系统,现在Linux也属于类似于UNIX的操作系统。 RISC CPU在软件和硬件上与Intel和AMD CPU不兼容。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/shoujiruanjian/article-367895-1.html
这坏坏的笑呢