Questions tagged «memory-hardware»

8
计算机如何确定字节的数据类型?
例如,如果计算机已10111100存储在RAM的特定字节中,计算机如何知道将此字节解释为整数,ASCII字符或其他内容?类型数据是否存储在相邻字节中?(我认为情况并非如此,因为这将导致一个字节使用两倍的空间。) 我怀疑也许计算机甚至不知道数据类型,只有使用它的程序才知道。我的猜测是,由于RAM是R AM,因此不能按顺序读取,因此某个特定程序只是告诉CPU从特定地址获取信息,而该程序定义了如何处理它。这似乎适合编程,例如需要类型转换。 我在正确的轨道上吗?

7
一台没有RAM但有磁盘的计算机等同于有RAM的计算机吗?
据我了解,内存用于很多事情。它充当磁盘缓存,并包含程序的指令及其堆栈和堆。这是一个思想实验。如果人们不关心计算机处理数据的速度或时间,那么假设计算机的磁盘容量很大,那么它可以拥有的最小内存量是多少?可以只拥有一个磁盘就可以消除内存吗? 显然不需要磁盘缓存。如果我们在磁盘上设置交换空间,则程序堆栈和堆也不需要内存。是否有需要记忆的东西?

3
并行随机读取似乎效果很好–为什么?
考虑以下非常简单的计算机程序: for i = 1 to n: y[i] = x[p[i]] 这里和y是字节的n个元素数组,而p是字的n个元素数组。在这里,n很大,例如n = 2 31(这样,只有很小一部分的数据适合任何类型的高速缓存)。XXxÿÿyññnpppññnññnn = 231ñ=231n = 2^{31} 假设由随机数组成,在1和n之间均匀分布。ppp1个1个1ññn 从现代硬件的角度来看,这意味着: 读取很便宜(顺序读取)p [ i ]p[一世]p[i] 读取非常昂贵(随机读取;几乎所有读取都是高速缓存未命中;我们将不得不从主内存中获取每个单独的字节)x [ p [ i ] ]X[p[一世]]x[p[i]] 写很便宜(顺序写)。ÿ[ 我]ÿ[一世]y[i] 这确实是我所观察到的。与仅执行顺序读取和写入的程序相比,该程序非常慢。大。 现在出现一个问题:该程序在现代多核平台上的并行度如何? 我的假设是该程序不能很好地并行化。毕竟,瓶颈是主要内存。单核已经在浪费大部分时间,只是在等待主存储器中的某些数据。 但是,当我开始尝试瓶颈是这种操作的某些算法时,这并不是我观察到的! 我只是用OpenMP并行for循环替换了朴素的for循环(本质上,它将范围拆分为较小的部分,并在不同的CPU内核上并行运行这些部分)。[ 1,n ][1个,ñ][1,n] 在低端计算机上,加速确实很小。但是在高端平台上,我惊讶地发现我获得了出色的近线性加速。一些具体示例(确切的时间安排可能会有所偏离,会有很多随机变化;这些只是快速的实验): 2 x 4核Xeon(总共8核):与单线程版本相比,速度提高了5-8倍。 2 x 6核Xeon(总共12核):与单线程版本相比,速度提高了8-14倍。 现在,这完全出乎意料。问题: 究竟为什么这种程序并行化如此好?硬件会发生什么?(我目前的猜测是沿着这些思路的:从不同线程进行的随机读取是“流水线式的”,得到这些答案的平均速率比单线程情况要高得多。) 是否有必要使用多个线程和多个内核来获得任何加速?如果确实在主内存和CPU之间的接口中发生了某种流水线操作,那么单线程应用程序是否不能让主内存知道很快将需要, …

1
什么是遗忘的RAM,它如何工作?
有人可以向我解释什么是完全遗忘的RAM吗? 我发现以下解释对我来说很清楚,但我想对技术方面有所了解: 加密并不总是足以确保隐私。如果攻击者可以观察到您对加密存储的访问方式,他们仍然可以了解有关您的应用程序运行情况的敏感信息。遗忘的RAM通过在访问内存时不断改组内存来解决此问题。从而完全隐藏正在访问的数据或什至是先前访问的时间。

1
为没有MMU的处理器编写多任务操作系统
我一直在考虑为某些ARM处理器编写一个业余操作系统。有很多流行的带有ARM MPU的单板计算机,所以我只想购买其中一台(选择一本带有更开放的文档)。当我发现即使内存确实足够的板卡也没有带有内存管理单元的MPU时,我感到很惊讶。 由于我一直在使用i386 +处理器,除其他一些Microchip PIC之外,什么都没有,所以我现在很困惑,不确定是否可以编写一个工作正常的操作系统,与编写的OS相比,其功能不会受到限制。用于带有MMU的MPU。 我可以想到一些“替换”或“模拟” MMU的解决方案,但我有几个问题: 在16位和32位模式的Intel处理器上,存在一种使用段和段选择器通过不同任务使用不同内存块的方法。这意味着在x86上执行任务切换时,可以通过更改段寄存器的内容来更改内存空间。是否有可用于ARM体系结构的内存分段的一般概念? 通过加载链接的目标文件而不是可执行文件,我可以使用重定位(修复程序)或与位置无关的代码来将任务指向存储器中的任务,就像使用分页结构映射存储器一样。这足够有效吗? 我还阅读了有关ARM处理器上的内存保护单元的内容。这些对您有帮助吗? 在没有MMU的系统上是否有任何“常规”方式来管理任务?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.