按字寻址和按字节寻址

按字寻址和按字节寻址

按字寻址和按字节寻址
先从一道简单的问题说起!设有一个1MB容量的存储器,字长32位,问:按字节编址,字编址的寻址范围以及各自的寻址范围大小?
如果按字节编址,则:
1MB = 2^20B
1字节=1B=8bit
2^20B/1B = 2^20
地址范围为0~(220)-1,也就是说需要二十根地址线才能完成对1MB空间的编码,所以地址寄存器为20位,寻址范围大小为220=1M
如果按字编址,则
1MB=2^20B
1字=32bit=4B
2^20B/4B = 2^18
地址范围为0~218-1,也就是说我们至少要用18根地址线才能完成对1MB空间的编码。因此按字编址的寻址范围是218
以上题目注意几点:
1.区分寻址空间与寻址范围两个不同的概念,寻址范围仅仅是一个数字范围,不带有单位
而寻址范围的大小很明显是一个数,指寻址区间的大小
而寻址空间指能够寻址最大容量,单位一般用MB、B来表示;本题中寻址范围为0~(2^20)-1,寻址空间为1MB。
2.按字节寻址,指的是存储空间的最小编址单位是字节,按字编址,是指存储空间的最小编址单位是字,以上题为例,总的存储器容量是一定的,按字编址和按字节编址所需要的编码数量是不同的,按字编址由于编址单位比较大(1字=32bit=4B),从而编码较少,而按字节编址由于编码单位较小(1字节=1B=8bit),从而编码较多。
3.区别M和MB。
M为数量单位。1024=1K,1024K=1M MB指容量大小。1024B=1KB,1024KB=1MB.
内存编址
前面我们知道了DRAM颗粒以及内存模块是如何扩展字长和容量的。一个内存可能是8位,也可能是64位,容量可能是1M,也可能是1G。那么内存是如何编地的呢?和地址总线,计算机字长之间又有什么关系呢?
2.1 字长
计算机在同一时间内处理的一组二进制数称为一个计算机的“字”,而这组二进制数的位数就是“字长”。。通常称处理字长为8位数据的CPU叫8位CPU,32位CPU就是在同一时间内处理字长为32位的二进制数据。 所以这里的字并不是我们理解的双字节(Word)而是和硬件相关的一个概念。一般来说计算机的数据线的位数和字长是相同的。这样从内存获取数据后,只需要一次就能把数据全部传送给CPU。
2.2 地址总线
前面我们已经介绍过地址总线的功能。地址总线的数量决定了他最大的寻址范围。就目前来说一般地址总线先字长相同。比如32位计算机拥有32为数据线和32为地线,最大寻址范围是4G(0x00000000 ~ 0xFFFFFFFF)。当然也有例外,Intel的8086是16为字长的CPU,采用了16位数据线和20位数据线。
2.3 内存编址
从前面我们知道一个内存的大小和它芯片扩展方式有关。比如我们内存模块是采用 16M8bit的内存颗粒,那么我们使用4个颗粒进行位扩展,成为16M32bit,使用4个颗粒进行字容量扩展变为64M32bit。那么我们内存模块使用了16个内存颗粒,实际大小是256MB。
我们需要对这个256M的内存进行编址以便CPU能够使用它,通常我们多种编址方式:
按字编址: 对于这个256M内存来说,它的寻址范围是64M,而每个内存地址可以存储32bit数据。
按半字编址:对于这个256M内存来说,它的寻址范围是128M,而每个内存地址可以存储16bit数据。
按字节编址:对于这个256M内存来说,它的寻址范围是256M,而每个内存地址可以存储8bit数据。
对于我们现在的计算机来说,主要都是采用按字节编址的方式。所以我们可以把内存简单的看成一个线性数组,数组每个元素的大小为8bit,我们称为一个存储单元。这一点很重要,因为后面讨论的所有问题内存都是以按字节编址的方式。 这也是为什么对于32位计算机来说,能使用的最多容量的内存为4GB。如果我们按字编地址,能使用的最大内存容量就是16GB了。
于是很容易想到一个问题,为什么我们要采用字节编址的方式呢?关于这个问题,我在网上基本没有找到答案,甚至都找不到问这个问题的。所以这里没法给出答案,为什么为什么呢? 麻烦知道的朋友告诉我哈。
另一方面的问题是,内存编址方式和DRAM芯片是否有关呢? 我认为还是有一定关系。比如我DRAM的芯片是8M
8bit,那么芯片最小的存储单位就是8bit,那么我们内存编址就不能按照半个字节来编址。否则内存取出8bit,根本不知道你要那4bit传给CPU。也有一种说法是现在的DRAM芯片cell都是8bit,所以采用按字节编址。另一方面应该也和数据总线位宽有关。

<think>好的,我现在需要帮用户解决在IntelliJ IDEA中配置和使用Maven 3.6.3的问题。根据用户提供的引用内容,可能存在兼容性问题,特别是引用[2]提到Maven 3.6.3可能与旧版IDEA(如2019.2)有冲突,建议使用3.5.3。但用户明确想用3.6.3,所以需要先确认他们的IDEA版本是否兼容。 首先,我应该按照步骤指导用户如何下载和安装Maven 3.6.3。引用[3]和[5]提到了下载和配置Maven的步骤,需要整合这些信息。步骤包括下载Maven、解压、配置环境变量,然后在IDEA中设置Maven路径。 接下来,配置IDEAMaven设置是关键。需要指导用户进入设置,找到Maven选项,指定Maven主目录、配置文件settings.xml和本地仓库路径。这里要提醒用户检查settings.xml是否正确配置阿里源,如引用[3]提到的,这可以加速依赖下载。 然后,用户可能会遇到问题,比如Plugins报红(引用[4])或者兼容性问题(引用[2])。需要建议用户检查IDEA版本是否过旧,如果使用2019.2或更早版本,可能需要升级IDEA或降级Maven。同时,可以建议清理本地仓库缓存或手动下载插件,如引用[5]提到的执行mvn help:system命令。 最后,生成相关问题时要覆盖常见问题,如性能分析、优化方法、应用场景,但根据用户的问题,应该围绕Maven配置和兼容性问题展开。例如,如何处理依赖下载慢,解决插件报错,以及排查兼容性问题等。 需要确保回答结构清晰,分步骤说明,并包含注意事项和常见问题解决方法,引用相关引用内容作为支持。同时,提醒用户注意IDEAMaven版本的兼容性,避免出现引用[2]中提到的问题。</think>### 如何在IntelliJ IDEA中配置和使用Maven 3.6.3 #### 步骤1:下载并安装Maven 3.6.3 1. 从[Apache Maven官网](https://maven.apache.org/download.cgi)下载3.6.3版本,解压到本地目录(例如:`D:\apache-maven-3.6.3`)。 2. 配置环境变量: - 新增系统变量`MAVEN_HOME`,值为Maven解压路径。 - 在`Path`变量中添加`%MAVEN_HOME%\bin`[^3][^5]。 #### 步骤2:配置IDEAMaven设置 1. 打开IntelliJ IDEA,进入 **File > Settings > Build, Execution, Deployment > Build Tools > Maven**。 2. 设置以下参数: - **Maven Home Path**:指向Maven 3.6.3的解压目录(如`D:\apache-maven-3.6.3`)。 - **User Settings File**:指定`settings.xml`文件路径(通常位于`conf/settings.xml`),确保已配置阿里云镜像加速依赖下载: ```xml <mirror> <id>aliyunmaven</id> <mirrorOf>*</mirrorOf> <name>阿里云公共仓库</name> <url>https://maven.aliyun.com/repository/public</url> </mirror> ``` - **Local Repository**:指定本地仓库路径(默认在用户目录下的`.m2/repository`)。 #### 步骤3:验证配置 1. 在IDEA中打开或新建Maven项目。 2. 执行命令`mvn help:system`测试环境是否正常。首次运行会下载必要文件到本地仓库,需等待完成。 3. 如果依赖下载失败或插件报红(如[^4]所述),尝试以下操作: - 清理本地仓库缓存(删除`.m2/repository`中相关文件)。 - 手动检查`settings.xml`中的镜像配置。 - 更新IDEA至最新版本(旧版本可能与Maven 3.6.3存在兼容性问题[^2])。 #### 注意事项 - **兼容性问题**:若使用IDEA 2019.2或更早版本,可能出现兼容性错误(如[^1][^2]所述),建议升级IDEA或降级至Maven 3.5.3。 - **网络问题**:阿里云镜像可显著提升下载速度,若仍缓慢,检查网络代理设置。 --- ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值