Java从入门到精通 (十) ~ 计算机是如何工作的呢 ?

news2024/9/9 8:07:38

每天进步一点点,每天创造一点点,每天做事多一点,愿你事事都领先,卓越成绩现眼前,美好生活一天又一天。

文章目录

目录

前言

前置知识

认识一下计算机的真实相貌

都说计算机使用二进制传输,为什么要使用二进制呢?

为什么人常用十进制呢?

计算机的发展趋势?

软件介绍

硬件的发展历史

电子管时代

晶体管时代

中小规模集成电路

大规模超大规模集成电路

x64的原理(机器字长)

摩尔定律

软件的发展

计算机目前发展的趋势

一、冯诺依曼体系

二、CPU中央处理器

1.衡量CPU的好坏

2.组成

2.1 指令

2.2 控制器

2.3 运算器

2.4 寄存器

2.5 时钟

2.6 总线接口单元

三、存储器 

1. 内存

1. MAR(Memory Address Register,内存地址寄存器)

2. MDR(Memory Data Register,内存数据寄存器)

操作过程示例:

2. 外存      

四、输入设备

五、输出设备

六、代码运行各个工作流程

总结



前言

这篇博客中,我们会从软件工程师的角度解释计算机是如何工作的,对于开发人员,我们的主要目标既不是可以造出自己的计算机,也不是介绍如何编程,而是希望让我们了解计算机的核心工作机制后,打破计算机的神秘感,并且有利于理解我们平时编程时的一些行为、动作的历史渊源。
大家可以配合​​​​​​下述​视频做更详尽的学习和了解。  【计算机科学速成课】[40集全/精校] - Crash Course Computer Science_哔哩哔哩_bilibili

前置知识

认识一下计算机的真实相貌

都说计算机使用二进制传输,为什么要使用二进制呢?

  1. 电子开关的自然状态: 计算机内部的所有数据处理和存储都是通过电子开关来实现的。这些开关只能处于两种状态中的一种:开或关,即逻辑上的 0 或 1。这种二元性质非常适合使用二进制表示,其中 0 表示开,1 表示关,从而直接对应电子开关的状态。

  2. 硬件实现简单: 电子设备能够轻松地处理和区分两种状态(低电压和高电压),这使得二进制成为传输和存储数据的理想选择。使用二进制可以简化硬件电路的设计和制造,提高了可靠性和效率。

  3. 容错性和稳定性: 二进制信号在传输过程中的误差容忍度较高。电子设备能够准确地识别和恢复损失的数据位,使得在噪声环境中依然能够可靠传输信息。

  4. 与逻辑运算的匹配性: 计算机内部所有的逻辑运算,如加法、乘法、逻辑与或非等,都可以直接应用于二进制数。这种一致性使得计算机可以在硬件层面上高效地执行复杂的运算和逻辑操作。

  5. 标准化和互操作性: 使用二进制作为计算机内部和外部通信的基础,促进了标准化和互操作性。几乎所有的数字设备和通信协议都支持二进制数据传输,这样不同设备之间可以更轻松地进行数据交换和通信。

当谈到二进制时,我们通常想到它只有两种状态:1和0。在光和电传输的快速速度下,最直观的方法是利用光的亮度(强光和弱光)或电流的强度(强电流和弱电流)来区分不同的状态。因此,二进制可以利用这些高速传输媒介来有效地传输信息。

工作原理

cpu的针脚也就跟我们的手指一样用来接收高低电频,来判断2进制数据

为什么人常用十进制呢?

几进制就是有几种不同的符号,十进制能推广主要是符合人的身体构造,十根手指头所有逢十进一。

计算机的发展趋势?

 

软件介绍

硬件的发展历史

电子管时代

晶体管时代

中小规模集成电路

大规模超大规模集成电路

x64的原理(机器字长)

摩尔定律

软件的发展

编程语言实际就是用来创造应用软件的

计算机目前发展的趋势

一、冯诺依曼体系

        美籍匈牙利科学家冯·诺依曼最先提出“程序存储”的思想,并成功将其运用在计算机的设计之中,根据这一原理制造的计算机被称为冯·诺依曼结构计算机。由于他对现代计算机技术的突出贡献,因此冯·诺依曼又被称为“现代计算机之父”。
现代的计算机 , 大多遵守 冯诺依曼体系结构
“程序存储” :指令以代码的形式事先输入到计算机的主存储器中,然后按其在存储器中的首地址执行程序的第一条指令,以后就按该程序的规定顺序执行其他指令,直至程序执行结束。即按地址访问并顺序执行指令

计算机按照此原理应具有5大功能:数据传送功能、数据存储功能、数据处理功能、操作控制功能、操作判断功能

  1. CPU 中央处理器: 进行算术运算和逻辑判断.
  2. 存储器: 分为外存和内存, 用于存储数据(使用二进制方式存储)
  3. 输入设备: 用户给计算机发号施令的设备.
  4. 输出设备: 计算机个用户汇报结果的设备.

但这样的结构会存在一个问题,比如:我某个数据想存在存储器中,而这种结构会通过运算器作为中转站,但是我们的运算器的主要功能是处理核心数据,现在还要用来中转是不是就会导致数据计算的效率降低。由此我们就会推出线代计算机的结构。

 现代计算机

  1. 主机:主存、运算器、控制器
  2. 其他硬件装置(外存、I/O设备等)统称为外部设备,简称外设

二、CPU中央处理器

1.衡量CPU的好坏

  1. 时钟频率

    • CPU的时钟频率(Clock Speed)是指其每秒钟执行的时钟周期数。更高的时钟频率通常意味着更高的性能,因为CPU能够更快地执行指令。但是,仅仅依赖时钟频率无法全面评估CPU的性能,因为性能还受到其他因素的影响。
  2. 指令集

    • CPU的指令集架构(Instruction Set Architecture, ISA)对其性能和功能有重要影响。现代CPU通常支持复杂的指令集,如x86、ARM等,并且可能支持多种扩展指令集,如SSE、AVX等,这些指令集能够提高特定应用程序的性能。
  3. 流水线结构

    • CPU的流水线(Pipeline)结构影响其每个时钟周期内能够完成的指令数目。较长的流水线可以提高吞吐量,但会增加分支预测错误等问题的成本。因此,流水线的设计需要在性能、延迟和功耗之间进行权衡。
  4. 缓存

    • CPU的缓存系统包括L1、L2和L3缓存,用于存储近期使用的数据和指令,以提高访问速度。较大、更高速的缓存可以显著提高CPU的性能,特别是对于需要频繁访问内存的应用程序。
  5. 并行处理能力

    • 现代CPU通常具有多核心,并支持超线程(Hyper-Threading)等技术来提高多任务处理能力。并行处理能力对于多线程应用程序和分布式计算至关重要。
  6. 功耗和散热

    • CPU的功耗直接影响到设备的电池寿命和散热需求。优秀的CPU设计能在提供高性能的同时保持较低的功耗。
  7. 制造工艺

    • CPU的制造工艺(如7nm、5nm等)影响其集成度、功耗和性能。较先进的制造工艺通常能够提供更高的性能和更低的功耗。
  8. 可靠性和容错能力

    • CPU的设计也涉及到可靠性和容错能力,包括错误检测与纠正(ECC)内存支持、断电保护等,这些能够提高系统的稳定性和可靠性。
  1. 主频:每秒钟CPU执行的次数,例如2.2GHZ,每秒钟执行22亿次指令,目前的CPU都是通过当前的状态动态改变的。
  2. 核心数CPU上焊上去的核心,就好比几个人同时工作一样。        

2.组成

2.1 指令

CPU上能够执行任务的最小单元,这些最小单元都是由二进制表示的机械语言,比如读写内存指令,堆栈操作指令。

指令通常由操作码(Opcode)和地址码(Addressing Mode)组成:

  • 操作码(Opcode):指定要执行的具体操作,例如加法、乘法、逻辑运算等。
  • 地址码(Addressing Mode地址码通常用于指定操作数的位置。它指定了操作数在内存或寄存器中的地址或寻址方式。地址码有助于指明操作码将如何访问或处理操作数。

    • 操作数(Operands):提供给操作码的数据或者操作的目标。

2.2 控制器

        控制器是计算机的指挥中心,有其指挥各部件自动协调第进行工作,现代计算机将运算器和控制器集成到一个芯片上,合成为中央处理器,简称CPU。有程序计数器(PC)、指令寄存器(IR)和控制单元(CU)。

控制器的核心组成:

  1. CU (Control Unit) : 控制单元,分析指令给程序发出信号。
  2. IR (Instruction Register) :指令寄存器,存放当前执行的指令。
  3. PC (Program Counter) :程序计数器,存放下一条指令地址,有自动加1的功能。

 完成一条指令:

  1. 取指令       PC
  2. 分析指令    IR
  3. 执行指令    CU

        控制器负责控制指令的执行顺序和处理器中其他部件的操作。它从内存中获取指令,并按照指令的顺序执行各项操作。举例:当你打开一个应用程序时,控制单元会协调各个部件执行加载程序、分配内存等操作。

2.3 运算器

运算器,是计算机的运算单元,用于算术运算(减加乘除)和逻辑运算(与或非)
运算器的核心单元是算术逻辑单元(ALU)

  1. ACC(Accumulator): 累加器,用于存放操作数,或运算结果。
  2. MQ(Multiplier-Quotient Register ): 乘商寄存器,在乘、除运算时,用于存放操作数或运算结果。
  3. X:通用的操作数寄存器,用于存放操作数。
  4. ALU(Arithmetic Logic Unit):算术逻辑单元,通过内部复杂的电路实现算数运算、逻辑运算

负责执行算术运算(如加减乘除)和逻辑运算(如与、或、非)。 举例:当你进行数学计算或逻辑运算时,ALU会执行相应的操作。

2.4 寄存器

寄存器是CPU内部的一些存储区域,用于临时保存和处理。

寄存器用于临时存储指令、数据和中间结果。CPU中包含多种类型的寄存器,如通用寄存器、指令寄存器、程序计数器等。 举例:当执行一个加法操作时,数据会被加载到寄存器中,ALU执行运算后的结果也会暂时存储在寄存器中。

  • 程序计时器

    • 保存当前执行到哪个指令,exe程序运行起来,就会把指令和数据加入到内存中(内存地址),cpu就会从内存中取指令,然后再执行指令,初始情况下,程序计时器就指向程序指令的入口,每一次取完一条指令,程序计数器的值都会自动更新,你一般情况下程序计时器指向下一条(顺序执行),但是如果遇到跳转类指令(jmp,call...)就会被设置成跳转的地址。

  • 栈指针寄存器

    • 栈指针寄存器存储了栈顶的地址,用于当前程序的调用栈。栈也是一块内存,这块内存保存当前这个程序方法调用过程中,一系列的关系(局部变量和方法参数),ebp始终指向栈底,esp始终指向栈顶,修改esp值就可以实现"出栈"/"入栈",有了这个才知道一个方法执行完毕后要回到哪里执行。

  • 其他的通用寄存器

    • 用来保存计算的中间结果,比如10+20+30,10+20=30就会存储在寄存器中,如果再算完10+20之后,还没来得及算后面,进程调度走了,就需要把保存10+20的寄存器的值给备份到上下文中。

2.5 时钟

  • CPU中的时钟控制着整个计算机系统的节奏和同步,决定了指令和数据在CPU中的流动速度

2.6 总线接口单元

负责处理CPU与其他硬件设备之间的数据传输,举例:当你从硬盘读取文件时,总线接口单元会协调数据在CPU和硬盘之间的传输。

  1. 地址总线:用于传输内存地址,指示数据在内存中的位置。

  2. 数据总线:负责传输数据信号,将数据从一个地方传输到另一个地方。

三、存储器 

1. 内存

速度快,空间小,耗电快,耗电后数据丢失,临时存储计算机正在运行的程序和数据。当你打开一个程序或文件时,计算机会将相关的数据加载到内存中以便CPU能够快速访问,CPU一般都是先读内存里面的内容。

  • 主存储器(Main Memory):包括RAM(随机存取存储器),用于临时存储程序和数据,其访问速度非常快,但是断电后数据会丢失。
  • 辅助存储器(Secondary Storage):如硬盘驱动器、固态硬盘(SSD)、光盘等,用于长期存储数据,数据在断电后仍能保持。

 

1. MAR(Memory Address Register,内存地址寄存器)

  • 功能
    • MAR是一个CPU内部的寄存器,用于存储当前正在处理的内存地址。
    • 当CPU需要访问主存储器中的特定数据或指令时,它会将要访问的内存地址存储在MAR中。
    • 通过PC或者CU传来地址,去对应的主存储器中执行对应的操作,然后将结果返回给MDR。

2. MDR(Memory Data Register,内存数据寄存器)

  • 功能
    • MDR也是CPU内部的寄存器,用于临时存储从主存储器读取或将写入主存储器的数据。
    • 当CPU从主存储器中读取数据时,数据首先被加载到MDR中,然后传输到CPU的其他部分进行处理。
    • 当CPU向主存储器写入数据时,数据被放置在MDR中,然后传输到指定的内存地址。
    • 存储着从主存读取的数据,如果是指令给控制器让CU分析,如果是数据传输给运算器,让其存放在操作数栈中。

操作过程示例:

  1. 读取操作

    • CPU通过MAR将要访问的内存地址发送到主存储器。
    • 主存储器根据MAR中的地址找到相应的数据,并将数据加载到MDR中。
    • CPU从MDR中读取数据进行进一步处理。
  2. 写入操作

    • CPU将要写入的数据放置在MDR中。
    • CPU将写操作的目标内存地址存储在MAR中。
    • 如果是指令给控制器让CU分析,如果是数据传输给运算器,让其存放在操作数栈中。
    • 主存储器接收到MAR和MDR中的地址和数据,并将数据写入到指定的内存地址。

2. 外存      

外存(Secondary Storage)是计算机系统中用于长期数据存储的部分,与CPU内部的高速缓存和主存(RAM)相比,外存通常拥有更大的存储容量但访问速度较慢。按照计算机组成原理的角度来看,评估外存的好坏和性能通常考虑以下几个方面:

  1. 存储容量

    • 外存的主要优势之一是其大容量,可以存储大量数据,包括操作系统、应用程序、用户文件等。优秀的外存能够提供足够的存储空间来满足不同用户和应用的需求。
  2. 访问速度

    • 相比主存和高速缓存,外存的访问速度较慢,通常以毫秒甚至更长的时间单位来衡量。这是因为外存通常使用机械硬盘(HDD)或固态硬盘(SSD),其数据存取涉及到物理位置的读写操作,远不及内存和高速缓存的速度。
  3. 接口和传输速率

    • 外存设备通过不同的接口连接到计算机系统,如SATA、USB、NVMe等。传输速率取决于接口类型和设备本身的性能。现代高速SSD通过NVMe接口可以提供比传统SATA接口更快的数据传输速率。
  4. 持久性

    • 外存的数据是持久存储的,即使在断电或重启后数据依然保存。这种持久性是外存的重要特征,使其适合长期存储和备份数据。
  5. 耐用性和可靠性

    • 优秀的外存设备通常具有高耐用性和可靠性,能够在长时间内保持数据完整性,并能抵抗物理损坏或意外事件(如断电)的影响。
  6. 成本效益

    • 外存设备的成本通常比较低廉,特别是机械硬盘。这使得外存成为存储大量数据的经济有效选择。

注意:输入、输出是以主机为中心谈论的!输入、输出设备都属于外部设备。

四、输入设备

  • 用户给计算机发号施令的设备,例如,鼠标键盘

五、输出设备

  • 计算机个用户汇报结果的设备,例如,音响

六、代码运行各个工作流程

指令和变量的数据都是存储在存储体中。
控制器会告诉主存储器是读操作还是写操作。 

核心:

  1. PC把要执行的主存地址给MAR
  2. MAR通过内存地址到主存中拿到指令给MDR
  3. MDR把拿到的数据交给IR执行指令
  4. IR把操作码分给CU让其分析指令
  5. CU分析到指令是 “取出至ACC”,就会通知IR
  6. IR将指令的地址码送给MAR
  7. MAR取数据交给MDR,MDR根据操作码交给ACC

 

总结上述代码: 


总结

        学习计算机组成原理对于学习和理解Java编程语言有着重要的帮助。计算机组成原理涵盖了计算机硬件系统的基本原理和组件,如处理器、存储器和输入输出设备。这些知识可以帮助学习者深入理解Java程序在计算机上的执行过程和性能优化。此外,它还能帮助理解数据结构、算法、内存管理和并发编程,从而编写更高效、更可靠的Java代码。掌握计算机组成原理还有助于学习者在系统级调试和分析上更加得心应手,提高职业竞争力。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1963713.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

哇!0.8秒启动!Linux快速启动方案分享,全志T113-i国产平台!

本文主要介绍基于创龙科技TLT113-EVM评估板(基于全志T113-i)的系统快速启动方案,适用开发环境如下。 Windows开发环境:Windows 7 64bit、Windows 10 64bit 虚拟机:VMware15.5.5 Linux开发环境:Ubuntu18.04.4 64bit U-Boot:U-Boot-2018.07 Kernel:Linux-5.4.61、Li…

政策收紧下,给EI人的一个小建议!

自中央大力推动文化体制改革、促进文化产业加快发展以来,我国出版业的数字化转型升级工作拉开序幕。其后,得益于新技术的发展、市场趋势的变化,数字出版开始出现“井喷”,出版融合成绩巨大,但也面临诸多挑战&#xff0…

手持气象站:便携与精准的完美结合

在气象监测领域,手持气象站以其独特的优势特点,正逐渐成为专业人士和爱好者的首选工具。这款小巧而强大的设备,将便携性与精准性完美融合,为各种户外活动和科学研究提供了极大的便利。 首先,手持气象站的最大亮点在于其…

虚拟主播实时直播技术方案:以年轻人互动方式探索直播新玩法2

随着互联网将内容传播的渠道变得逐渐丰富,观众对直播内容形式、互动玩法的多元化要求越来越高,文旅、电商、企业品牌、广电、泛娱乐MCN、游戏动漫等等领域纷纷主动迎合Z世代喜好,利用虚拟人直播内容抢夺观众的注意力,以独特的虚拟…

2024 杭电多校 第四场

分组 给定 n 个正整数 a1,a2,…,an (1≤ai<2m) 以及 0 到 2m−1 的权重 w0,w1,…,w2m−1&#xff1b;你需要把这 n 个正整数分成四组 A,B,C,D&#xff0c;令 f(A),f(B),f(C),f(D) 分别表示每组中所有数字的异或和&#xff0c;你的分组方案需要最小化 wf(A),wf(B),wf(C),wf(…

智慧社区的秘密武器:数据可视化的力量

在现代城市的发展中&#xff0c;智慧社区已成为提升居民生活品质和管理效率的重要方式。而数据可视化作为信息技术的关键工具&#xff0c;正是实现智慧社区目标的强大助推器。通过将复杂的数据转化为直观的图表和可视化图像&#xff0c;数据可视化不仅能够帮助社区管理者快速理…

前端工具专有名词记录

目录 前言 正文 1.包管理器 2.构建工具和开发环境&#xff08;项目管理器&#xff09; 3.自动化测试工具 4.JavaScript 框架和模版 5.代码质量工具 尾声 &#x1f52d; Hi,I’m Pleasure1234&#x1f331; I’m currently learning Vue.js,SpringBoot,Computer Security and so…

全新小体积RK3562核心板,解锁神秘技能!

RK3562小体积金手指系列核心板基于瑞芯微四核Cortex-A53Cortex-M0处理器设计&#xff0c;工作主频高达2GHz&#xff0c;最高搭载4GB高速LPDDR4、32GB eMMC。该核心板拥有204 Pin脚&#xff0c;尺寸仅为67.6mm *45mm&#xff0c;支持千兆网、USB3.0、串口、PCIE、HDMI等丰富外设…

vite tsx项目的element plus集成 - 按需引入踩坑

前面我们进行了开源组件的自研&#xff0c;很多组件可直接用现成的开源组件库&#xff0c;并不需要自己重复造轮子&#xff0c;为此我们讲如何在当前vite vitepress tsx技术整合的项目中实现element plus组件的按需引入&#xff0c;同时解决遇到的一些坑。 安装Element Plus…

《史上最简单的SpringAI+Llama3.x教程》-03-ETL pipeline解决RAG文件处理问题

在企业内部构建基于大型语言模型&#xff08;LLM&#xff09;的应用程序时&#xff0c;数据的提取、转换和加载&#xff08;ETL&#xff09;过程至关重要。Spring AI 提供了一个集成的框架&#xff0c;可以简化这一过程&#xff0c;特别是在使用 LLM 进行检索增强生成&#xff…

Postman 接口测试工具简易使用指南

一、Postman是什么? 我通过kimi问了这样一个问题&#xff0c;它给我的回答是这样的: 它的回答也算比较中规中矩&#xff0c;简单的说postman实际上就是一款接口测试工具&#xff0c;同时它还可以编写对应的测试脚本以及自动生成对应的API文档&#xff0c;结合我的习惯来说&am…

Springboot处理跨域请求

文章目录 概要同源策略跨域问题复现解决跨域方法1方法2方法3 jwt拦截器验证token防止请求存在缓存 概要 跨域请求&#xff08;Cross-Origin Requests&#xff09;指的是在一个网页中加载的资源来自与当前网页不同的域、协议或端口。浏览器出于安全考虑&#xff0c;默认会限制这…

Mybatis超级方便操作数据方式(注解+封装mapper接口)!!!

Mybatis作为一个流行的持久层框架&#xff0c;其优化了Java程序与数据库的交互过程。它的核心在于使用Mapper接口与XML映射文件或注解绑定来实现对数据库的操作。这种方式不仅简化了数据库操作&#xff0c;还提升了开发效率&#xff0c;使得开发者可以从繁琐的JDBC代码中解放出…

索引排序以及explain

标题 explain函数typekeyextrarows 索引排序 前言&#xff0c;如无特殊提醒&#xff0c;默认建立如下索引。 explain函数 type type列反映了访问类型。表示mysql如何找到数据。访问类型有很多种&#xff0c;从全表扫描到索引扫描、范围扫描、唯一索引查询、常数引用等。这里列…

Oracle <left> join on where 先过滤还是先join

一、left join onon条件是在生成临时表时使用的条件&#xff0c;它不管on中的条件是否为真&#xff0c;都会返回左边表中的记录。 二、left join on and&#xff08;1&#xff09;如果and语句是对左表进行过滤的&#xff0c;那么不管真假都不起任何作用。&#xff08;2&#x…

视频剪辑免费素材哪里能找到?

在创作视频时&#xff0c;素材的选择至关重要。为了让您的项目更具吸引力和专业性&#xff0c;我整理了8个剪辑必备素材网站&#xff0c;它们提供了丰富多样的资源&#xff0c;从高清视频到优质音乐&#xff0c;应有尽有。让我们一起探索这些资源丰富、质量上乘的平台&#xff…

倍思开放式耳机佩戴舒服吗?南卡、倍思、QCY三款热门产品测评!

​放式蓝牙耳机已然成为年轻族群的新风尚&#xff0c;就连不少中老年朋友也偏爱在公园漫步时佩戴它们。这些耳机在娱乐、学习、健身、办公等多元化场景中展现出强大的实用性。作为一名数码博主和耳机狂热粉&#xff0c;我最近一直收到不少小伙伴的私信&#xff0c;想让我测评一…

reaConverter(图片格式转换工具) Pro v7.819 中文授权版

reaConverter是一款图片文件格式转换工具&#xff0c;它支持480多种不同的文件格式。使用reaConverter可以轻松的转换一批图片文件&#xff0c;也可以对其进行编辑和优化。 软件功能&#xff1a; 1. 图片文件格式转换&#xff1a;支持将JPEG、PNG、GIF、TIFF、BMP等格式的图片…

java多线程, 该如何处理异常?

目录 如何处理线程运行时异常 UncaughtExceptionHandler 没有注入 未捕捉异常处理器, 线程是如何处理异常的? 看的时候, 希望自己能在idea中跟着ctrl 鼠标左键, 点一遍. . . 如何处理线程运行时异常 先来了解一下java的异常: 在Java中&#xff0c;异常&#xff08;Excep…

fastjson-流程分析

参考视频&#xff1a;fasfjson反序列化漏洞1-流程分析 分析版本 fastjson1.2.24 JDK 8u65 分析过程 新建Person类 public class Person {private String name;private int age;public Person() {System.out.println("constructor_0");}public Person(String na…