内存、CPU、硬盘

在这里插入图片描述

内存

内存是外存与CPU进⾏沟通的桥梁,计算机中所有程序的运⾏都在内存中进行。
内存(Memory)也称内存储器和主存储器,它用于暂时存放CPU中的运算数据,与硬盘等外部存储器交换的数据

只要计算机开始运⾏,操作系统就会把需要运算的数据从内存调到CPU中进⾏运算。当运算完成,CPU将结果传送出来。

内存越大,那么就可以把更多的东西都缓存起来,等到电脑要读写的时候,就可以直接从内存里面找,如果内存没有CPU想要读取的数据,那么就需要从硬盘去读取然后放入内存,然后再交付CPU,从而很可能会出现卡顿或者死机的现象。

内存中的信息会随掉电而丢失

内存条:
在这里插入图片描述

虚拟内存

概念引入:
将一个作业全部装入内存后再运行,会出现以下两个问题:
1、有的作业很大,其所要求的的内存空间超过了内存的总容量,作业不能全部装入内存,致使作业无法运行。
2、有大量作业要求运行,但由于内存容量不足以容纳所有这些作业,只能将少数作业装入内存让他们先运行,而将其他大量的作业留在外存上等待。

解决方法:
1、物理上增加内存容量(受机器自身限制)
2、从逻辑上扩充内存——允许将一个作业分多次调入内存,电脑中的内存空间不够用时,把数据临时存放到硬盘上的空间,这些硬盘空间保存了内存中的数据,逻辑容量是由内存容量和外存容量之和决定的。

有以下几种算法来确定何时将暂时不用的数据存放到外存,并将当前要用的数据放入内存。(调入和置换)

最佳置换算法:换出页是以后永不使用的,或是在未来最长时间内不再被访问的。

先进先出(FIFO)置换算法:总是换出最先进入内存的页面。

LRU置换算法: 选择最近最久未使用的页面换出。

LFU置换算法: 选择近期使用最少的页面换出。

虚拟内存能否提高电脑速度?
虚拟内存通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。即虚拟内存的运行是在硬盘上,硬盘的读取速度远远低于物理内存的,所以它的速度跟内存比还是差很多的,

硬盘

电脑硬盘是计算机最主要的存储设备——俗称外存,用来存放暂时不用的信息。硬盘中的信息可以长久保存,不会随断电而丢失。

因为硬盘的读写速度很慢,如果直接与CPU交互,那么发送一次数据就需要十几秒,这段时间CPU什么都没法干。所以,内存就出现了。当你打开一个软件时,电脑就把这个软件从硬盘复制到内存里去,由内存和CPU交互,他们两个的速度是差不多的。
(CPU与硬盘不发生直接的数据交换,CPU只是通过控制信号指挥硬盘工作,硬盘上的信息只有在装入内存后才能被处理。)

在这里插入图片描述
固态硬盘(SSD):容量较小读写速度快。
机械硬盘(HDD):容量较大读写速度慢。
原因:
普通的机械硬盘的读写过程需要磁头在其他机械零件的精密配合下进行寻道找到磁盘上数据存储的位置。也就是说机械硬盘的读写过程依靠的是物理机械的运作。

固态硬盘的读写过程,是在主控的指挥下,通过电学信号的传输完成对闪存芯片(闪存的基本单元)的读写操作。所以,固态硬盘的读写过程依靠的是电学信号。

电学信号比物理机械的运作快多了,这就是固态硬盘硬盘读写快的本质原因。

原文出处:https://www.zhihu.com/question/419103272/answer/1574298729.

补充点:
机械硬盘通过改变磁盘的磁极进行数据存储,存入大量数据是不会增加硬盘的重量的。
但是固态硬盘的数据写入是通过打入电子的形式,所以存入大量数据到固态硬盘是会增加固态硬盘的重量的。

为什么C盘太满会影响电脑的运行速度。

1、 太满一般说明碎片过多。碎片多肯定影响速度。
2. 系统默认虚拟内存在C盘,如果C盘过满,虚拟内存就会过于分散或者达不到分配值,操作系统难于维护虚拟内存,导致访问变慢。
3. 太满的话,存储的东西都比较分散,硬盘是按块来的,如果块剩的少了,分配的块就比较散,寻道时间会比变长。
4. 操作系统一般都是在C盘,运行时会产生很多临时文件,如果C盘过满,为了生成这些文件操作系统自己就会删掉一些确定不用的临时文件,这个过程也会浪费时间和资源。
5. . 基于4,不仅仅是操作系统,很多其他应用软件也会有类似的临时文件和临时空间的需求。
6. 计算机很多功能都有缓存机制,包括网络访问,视频缓冲等等,这些功能一般也会在C盘开辟空间来进行,如果空间不够,就会少缓存甚至不缓存,当你用这些功能的时候自然就会觉得电脑变慢了。

原文出处: https://www.zhihu.com/question/29302513/answer/128777214.

扩充内存和硬盘

在这里插入图片描述

CPU

中央处理器(CPU),是电⼦计算机的主要设备之⼀,电脑中的核⼼配件。其功能主要是解释计算机指令以及处理计算机软件中的数据。 CPU是计算机中负责读取指令,对指令译码并执⾏指令的核⼼部件。中央处理器主要包括两个部分,即控制器、运算器,其中还包括⾼速缓冲存储器及实现它们之间联系的数据、控制的总线。电⼦计算机三⼤核⼼部件就是CPU、内部存储器、输⼊/输出设备。中央处理器的功效主要为处理指令、执⾏操作、控制时间、处理数据.

在这里插入图片描述

CPU 频率

CPU频率是指CPU处理器的时钟频率,简单说是CPU运算时的工作的频率(1秒内发生的同步脉冲数)的简称。单位是Hz。它决定计算机的运行速度

主频也叫时钟频率,单位是兆赫(MHz)或千兆赫(GHz),用来表示CPU的运算、处理数据的速度。通常,主频越高,CPU处理数据的速度就越快。

CPU主频越高越好吗
决定CPU性能不仅仅是主频,而是需要结合架构、核心线程数、缓存等综合方面去看。有时候,我们说CPU主频越高,性能越强,往往是在同代同架构、核心/线程相当的情况进行对比下。只有这种环境下,我们才能肯定的说CPU主频越高,性能就越好。

CPU核心数与主频都是决定处理器性能的核心参数,究竟谁更重要并没有统一的答案,主要是看你的需求是什么。也就是你的电脑主要用来干什么。
如果是用来打游戏,由于游戏需要的是最简单粗暴的计算工作,这方面多核心有点无用武之地。因此,目前主流游戏都是双核/四核心调用。因此,如果是玩游戏,一般双核够用,四核充裕,预算有限的话,不妨优先考虑一些高主频CPU,这样单核更强,游戏方面更具优势。当然,如果是游戏多开,这种情况下,对多核也有较高的要求,这种情况下,CPU主频和核心数就都显得十分重要了。

但如果是一些专业工作类需求,尤其是设计类工作,3D建模/视频渲染的话。多核心多线程并行处理,则显得非常重要,并且需要CPU更快更大的缓存来暂存海量的运算数据,这个时候CPU频率反而是其次的。这种情况则对CPU主频要求不高,可以尽量选择多核、大缓存的CPU。

CPU 高速缓存

参考文章:https://blog.csdn.net/huayushuangfei/article/details/80717815.

CPU缓存(Cache Memory)是位于CPU与内存之间的临时存储器,它的容量比内存小的多但是交换速度却比内存要快得多。
CPU高速缓存的出现主要是为了解决CPU运算速度与内存读写速度不匹配的矛盾,因为CPU运算速度要比内存读写速度快很多,这样会使CPU花费很长时间等待数据到来或把数据写入内存。 在缓存中的数据是内存中的一小部分,但这一小部分是短时间内CPU即将访问的,当CPU调用大量数据时,就可先缓存中调用,从而加快读取速度。
在这里插入图片描述

当CPU需要读取数据并进行计算时,首先需要将CPU缓存中查到所需的数据,并在最短的时间下交付给CPU。如果没有查到所需的数据,CPU就会提出“要求”经过缓存从内存中读取,再原路返回至CPU进行计算。而同时,把这个数据所在的数据也调入缓存,可以使得以后对整块数据的读取都从缓存中进行,不必再调用内存。

CPU三级缓存

在这里插入图片描述

一级缓存:L1
在CPU内部集成的CPU缓存已经不能满足整机的性能需求,而制造工艺上的限制不能在CPU内部大幅提高缓存的数量,所以出现了集成在主板上的缓存,当时人们把CPU内部集成的CPU缓存成为一级缓存,在CPU外部主板上的缓存称为二级缓存。

二级缓存:L2
L2二级缓存比L1一级缓存的容量要更大,但是L2的速率要更慢,为因为:L2比L1要更远离CPU核心,L1是最靠近CPU核心的缓存,CPU需要读取L2的数据从物理距离上比L1要更远;L2的容量比L1更大。

三级缓存:L3
L3三级缓存比L2二级缓存的容量更大,速率比L2更慢。

每一级缓存中所储存的全部数据都是下一级缓存的一部分,这三种缓存的技术难度和制造成本是相对递减的,所以其容量也是相对递增的。

L1的运行速度很快,但是它的数据容量很小,CPU能在L1里命中的概率大概在80%左右——日常使用的情况下;L2、L3的机制也类似如此,这样一来,CPU需要在内存中读取的数据大概为5%-10%,其余数据命中全部可以在L1、L2、L3中做到,大大减少了系统的响应时间,总的来说,所有CPU读取数据的顺序都是先缓存再内存。

缓存并不是越大越好,过大反而降低命中率,过小缺失率又会增大,所以要选择合适大小的一级缓存

缓存行

在这里插入图片描述
当CPU需要某个数据X时,会将与X有关的数据通过缓存行一起调入缓存。这样就不必多次将某些“合作”的相关数据分多次调入缓存。提高了效率。

缓冲行会存在一个问题:有两个线程同时共用同一个数据,当某个线程将数据更改的的时候,硬件层面会有一个协议来修改另个一个线程中的相同数据。使数据保持一致性。
在这里插入图片描述

在这里插入图片描述

public class CacheLineTest {

    public static long COUNT =10_0000_0000L;
    private static class T {
        //private long p1,p2,p3,p4,p5,p6,p7;
        public long x = 0L;
          //private long p9,p10,p11,p12,p13,p14,p15;
    }
     public static T[] arr = new T[2];
        static {
            arr[0]=new T();
            arr[1]=new T();
        }
    public static void main(String[] args) throws Exception{
        CountDownLatch latch = new CountDownLatch(2);
        Thread t1=new Thread(()->{
            for (long i = 0; i <COUNT; i++) {
                arr[0].x=i;
            }
            latch.countDown();
        });
        Thread t2=new Thread(()->{
            for (long i = 0; i <COUNT; i++) {
                arr[1].x=i;
            }
            latch.countDown();
        });
        final  long start=System.nanoTime();
        t1.start();
        t2.start();
        latch.await();
        System.out.println((System.nanoTime()-start)/100_0000);
    }
    }

CPU-内存的工作原理

在这里插入图片描述
详细文章:CPU-内存作用演示——程序的执行过程
https://blog.csdn.net/weixin_46369022/article/details/121281774.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GuochaoHN

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值