计算机基础之内存

article/2025/9/17 8:24:21

目录

  • 1.什么是内存
  • 2.内存的物理结构
  • 3.内存的使用
  • 4.数据在内存中为什么用二进制表示
  • 5.二进制的补码

1.什么是内存

内存是与cpu沟通的桥梁,计算机中所有程序的运行都要依靠内存,内存对计算机的影响非常大,内存又被称为主存,作用就是存放cpu中的运算数据,以及与硬盘等外部存储设备交换的数据。cpu一般会把需要运算的数据调到主存中进行运算,运算完后cpu将结果再传出来。

2.内存的物理结构

内存内部由各种集成(IC)电路组成,它的种类很庞大,但是主要分为三种存储器:

  • 随机存储器RAM:内存中最重要的一种,表示既可以从中读取数据,也可以写入数据,当机器关闭时,内存中的信息就会丢失。

  • 只读存储器ROM:ROM一般只能用于数据的读取,不能写入,但是当机器停电时,这些数据不会丢失。

  • 高速缓冲存储器Cache:它分为一级缓存(L1 Cache)、耳机缓存(L2 Cache)、三级缓存(L3 Cache)。这些数据位于内存和cpu之间,是一个读写速度比内存更快的存储器,当CPU向内存中写入数据时,这些数据也会被写入高速缓冲存储器中,当CPU再次需要读取这些数据时,会直接从告诉缓存中读取这些数据,如果Cache中没有,CPU会再去读内存中的数据。

  • 一级缓存是离CPU最近的,由于一级缓存的技术难度和制造成本最高,提高容量所带来的技术难度增加和成本增加非常大,所带来的性能提升却不明显,所以一级缓存的容量是最小的。

  • 一般来说,一级缓存可以分为一级数据缓存(Data Cache,D-Cache)和一级指令缓存(Instruction Cache,I-Cache)。二者分别用来存放数据以及对执行这些数据的指令进行即时解码,而且两者可以同时被CPU访问,减少了争用Cache所造成的冲突,提高了处理器效能。目前大多数CPU的一级数据缓存和一级指令缓存具有相同的容量。
    下面是我用CPU-Z查看的我的电脑的高速缓存信息:
    在这里插入图片描述

  • 内存的IC元件上有地址信号、数据信号、电源信号、控制信号,通过引脚来传递这些信号,进行数据的读写。

  • 数据信号的引脚数量决定每次可以输入输出的数据的多少,例如有8个数据线,表示,每次可以输入输出8bit的数据。

  • 地址信号的引脚的数量决定了内存可以存放的数据,例如有10个地址线,表示,可以指定 2 10 2^{10} 210个地址,每个地址可以存放1个字节的数据。

  • 内存读写数据都是以字节为单位的.

  • 控制信号主要有WR,表示写信号,当其值为1时,表示写。RD,表示读信号,当其值为1时,表示读。

3.内存的使用

  • 对于c语言,是通过指针去使用内存的,通过使用指针,可以对任意内存地址进行读写。

  • 另外c语言中的数据类型所占的字节数都是整数,没有小数,这也是因为上面提到的数据在内存中以字节为单位进行读取。不同的数据类型具有不同 的字节数,这也决定了读取该种数据类型时,读取几个字节。

  • 例如:数组再内存中是内存中连续排列的形式,而链表在内存中就不是连续排列的形式。

4.数据在内存中为什么用二进制表示

  • IC的所有引脚只有两种电压:0v和有电压,这种特性决定了计算机的信息存储只能用0和1表示。
  • 为什么一个字节等于8位,这是因为8位能够涵盖所有的字符编码。
  • 我们所说的32位电脑以及64位的电脑,是指的计算机一次可以处理的数据位数,也就是数据线有32根和64根。

5.二进制的补码

例如对于39这个十进制数,表示成8位的二进制0010 0111,左移位一位,也就变成0100 1110,相当于扩大了2倍,按道理来说右移一位就相当于缩小为原来的1/2,就变成小数了,这怎么办?

通过上面这个小例子,我们也可以看出来直接使用原始的二进制码来表示数据,处理移位操作的时候会出现问题。下面介绍怎么解决这个问题:

  • 首先二进制数中的负数,一般会把最高位当作符号位来使用。符号位是0表示正,1表示负。-1用二进制表示为1000 0001,+1的二进制数为0000 0001,最高位为符号位,二者相加的话,表示为1000 0010,这个答案显然是不正确的。
  • 其实因为计算机无法进行减法运算,比如1-1,就是通过1+(-1)来实现的,所以在表示负数的时候要用到二进制补码,补码就是用正数来表示的负数。
  • 补码的计算通过将除符号位外的各数位取反然后加1获得。例如:-1的二进制补码为:1000 0001 ->取反1111 1110->加1: 1111 1111。正数的补码等于原码。因此1+(-1)表示为0000 0001 + 1111 1111->0000 0000.
  • 所以负数的二进制表示就是先求其补码,补码的求解过程就是对其原码除符号位外其余各位取反,然后加1
  • 当计算结果为负的时候,计算结果的值也是以补码的形式出现的。补码变原码:符号位与最后一个1之间的所有数字按位取反.
  • 对于c中int型数据占4个字节32位,取值的范围 − 2 31 至 2 31 − 1 -2^{31}至 2^{31}-1 2312311,也就是-2147483648 - 2147483647 ,为什么是这样的结果就可以解释通了,最高位为符号位,因此具体数据占31位,0由于其符号位为0,所以归到了正数,即正数从0000 … 0000到0111 … 1111,负数在计算机内的补码从1000 … 0000到1111 … 1111,由于负数存的是补码,转为原码就是0000 … 0000到1000 … 0001,此时我们可以看出右端为-1,左端怎么是0,其实左端对应这个补码1000 … 0000,表示的是 − 2 31 -2^{31} 231,由于上面提到了0000 … 0000在计算机内表示的才是0。简单总结一句就是,32位数据,去掉符号位还剩31位,31位可以表示 2 31 − 1 2^{31}-1 2311个数,0归到了正数的表示上,所以正数最大值比负数的最大值的绝对值少1

http://chatgpt.dhexx.cn/article/VpUFU08y.shtml

相关文章

计算机基础- -认识内存

计算机基础- -认识内存 文章目录 计算机基础- -认识内存一、什么是内存二、内存的物理结构1.内存的读写过程2.内存的现实模型 三、内存的使用1.指针2.数组是内存的实现3.栈和队列4.链表5.二叉树 一、什么是内存 内存(Memory) 是计算机中最重要的部件之一,它是程序与…

电脑内存介绍(精心整理)

内存是电脑的主要硬件之一,主要用于存储和交换正在运行的程序和数据。简单的说就是,断电之后,内存存储的数据就会消失。所以我们常用的软件需要安装在硬盘等外存设备里,打开游戏或者软件时,就需要把他们调出到内存中运…

四大CPU架构的区别

我们目前使用比较多的架构有:ARM、RISC-V、MIPS,X86等等。其实还有一些指令的,但是其他的指令都是比较小众,只在专业的领域使用。 我们目前使用比较多的架构有:ARM、RISC-V、MIPS,X86等等。其实还有一些指…

四大CPU架构区别

我们目前使用比较多的架构有:ARM、RISC-V、MIPS,X86等等。其实还有一些指令的,但是其他的指令都是比较小众,只在专业的领域使用。 ARM架构是一个32位精简指令集处理器架构,其广泛地使用在许多嵌入式系统设计。它主要从…

Linux 查看CPU架构及内核版本

涉及arch命令和/proc/version文件 1 查看CPU架构 有些软件的安装需要和CPU架构相匹配,如JDK等等,所以需要确定主机的CPU架构类型。可使用命令arch查看Linux系统的CPU架构,如下: arch2 查看内核版本 文件/proc/version中包含系统…

如何查看手机的CPU架构

几款专门获取手机设备信息的App: 通过这些App,你能看到你的安卓手机很多核心底层的信息,对于开发者而言,这些信息对于开发App时的写代码或者debug何其重要! 这些App都能查看像CPU架构、GPU、传感器、温度、存储、电池…

Android CPU架构

Android CPU架构有:arm64-v8a、armeabi-v7a、armeabi、x86 CPU架构 1)arm64-v8a 第8代、64位、ARM处理器 包含AArch32、AArch64两个执行状态对应32、64bit 支持arm64-v8a、armeabi-v7a、armeabi 2)armeabi-v7a 第7代、ARM处理器 …

cpu架构知识

微信公众号:运维开发故事,作者:夏老师 Part1架构概述 从系统架构来看,目前的商用服务器大体可以分为三类 对称多处理器结构(SMP:Symmetric Multi-Processor) 非一致存储访问结构(NUMA:Non-Uniform Memory…

CPU架构名称

Coffee Lake-Refresh 第九代酷睿 2018-2019年 14nm Coffee Lake 第八代酷睿 2017-2018年 14nm Kaby Lake 第七代酷睿 2016年 14nm Skylake 第六代酷睿 2015年 14nm Broadwell 第五代酷睿 2014-2015年 14nm Haswell 第四代酷睿 2013年 22nm Ivy Bridge 第三代酷睿 2012年 22nm S…

指令集与CPU架构概念与联系

指令集 指令集,顾名思义,指令的集合,CPU用来计算和控制计算机系统的,本质上是二进制机器码。 CPU依靠指令来计算和控制系统,故而需要规定一些列与硬件电路相互配合的指令系统来完成CPU的设计。以此来看,指…

Linux内核架构:CPU架构详细介绍(图例解析)

一. 概述 CPU架构是CPU商给CPU产品定的一个规范,主要目的是为了区分不同类型的CPU。目前市场上的CPU分类主要分有两大阵营,一个是intel、AMD为首的复杂指令集CPU,另一个是以IBM、ARM为首的精简指令集CPU。不同品牌的CPU,其产品的…

cpu架构之体系架构

cpu架构之体系架构 1 现代CPU体系结构简介 现代的CPU基本上归为冯诺依曼结构(也称普林斯顿结构)和哈佛结构。 1.1 冯诺依曼结构 冯诺依曼结构(von Neumann architecture),也称普林斯顿结构,是一种将程序…

主流的CPU架构

cpu架构 CPU架构是CPU厂商给属于同一系列的CPU产品定的一个规范,是为了区分不同类型CPU的重要标示。目前市面上的CPU分类主要分有两大阵营,一个是intel、AMD为首的复杂指令集CPU,另一个是以IBM、ARM为首的精简指令集CPU。两个不同品牌的CPU&a…

Android CPU架构之ARM和X86

Android CPU架构之ARM和X86 前言1. CPU2. CPU 架构3. ABI4. 视频资料 一、Android相关CPU架构二、如何查看Android设备 CPU架构三、CPU架构综述1. x86架构x86指令集发展x86-64 分为intel和AMD 2. ARM架构3. MIPS架构4. SPARC架构5. Alpha架构6. PowerPC系列7. 架构之间的竞争7.…

x86 CPU架构

本文是极客时间《趣谈Linux操作系统》的第6讲笔记, 链接:06 | x86架构:有了开放的架构,才能打造开放的营商环境-极客时间 Intel的8086 CPU架构 数据单元: 8个16bit 通用寄存器, 后面拓展位32bit 控制单元 IP 寄存器就…

通过命令行快速了解电脑CPU架构

Linux 和 MacOS 使用终端(小黑窗)执行下面的命令,根据输出结果查表: uname -m输出 的内容分别对应架构 输出对应架构i386, i686i386x86_64amd64arm, armelarm_garbagearmv7l, armhfarmv7*mipsmips*mips64mips64* Window 按 WinR…

四大主流cpu架构

四大主流cpu架构:1、X86架构,采用CISC指令集(复杂指令集计算机),程序的各条指令是按顺序串行执行的,每条指令中的各个操作也是按顺序串行执行的。2、ARM架构,是一个32位的精简指令集&#xff08…

CPU 架构(x86/ARM)简介

CPU 架构通过指令集的方式一般可分为 复杂指令集(CISC) 和 精简指令集(RISC) 两类,CISC 主要是 x86 架构,RISC 主要是 ARM 架构,还有 MIPS、RISC-V、PowerPC 等架构。 本文重点介绍 x86 和 ARM…

CPU架构详细介绍

1、概述 CPU架构是CPU商给CPU产品定的一个规范,主要目的是为了区分不同类型的CPU。目前市场上的CPU分类主要分有两大阵营,一个是intel、AMD为首的复杂指令集CPU,另一个是以IBM、ARM为首的精简指令集CPU。不同品牌的CPU,其产品的架…

CPU架构的简介(目前有哪些架构及其特点)

以下内容源于网络资源的学习与整理,如有侵权请告知删除。 注意,这篇文章是很早前发布的,里面的数据与描述与当下可能不符,仅当常识认知用。 CPU发展至今存在着很多种架构,比如x86架构、ARM架构、MIPS架构、PowerPC架构…