标签: computer-architecture

多个内核可以同时读取相同的RAM位置吗?

多个内核可以同时读取相同的RAM位置吗?我特别感兴趣的是x86架构CPU.同一CPU上的两个不同内核的内部缓存也可以从相同的RAM位置同时填充吗?

computer-architecture

3
推荐指数
1
解决办法
1383
查看次数

通用机器代码语言?

我一直在考虑机器代码如何特定于架构以及Javascript如何在(几乎)每个浏览器中工作.我一直在研究一个必须做一些严肃计算的项目,它是基于Javascript的,需要一分钟才能完成计算.它让我渴望C的速度.但是项目使用Javascript的全部原因是为了简单和便携.

这给了我一个想法,如果有一种类似于Javascript的语言,就像在每个架构上一样可移植并作为可执行文件运行,该怎么办?大多数人会指向Java,但我正在考虑一些开销较少且由操作系统处理的东西.不是字节代码,而是本机机器代码.

做了一些研究和思考,以实现这项任务的不可能性.您如何制作一个像普通C编写的应用程序一样小的可执行文件,该应用程序适用于在每个体系结构上工作的特定体系结构,速度与在C中为该体系结构本地编译的速度相同?

这是我的下一个想法.本机机器代码特定于架构,每个架构都具有某些特殊功能,有时以不同方式处理相同的任务.某些优化也是针对每个体系结构的.如果有通用机器代码怎么办?当操作系统将指令加载到ram中时,它会自动转换指令以适应架构.或许(更疯狂的想法)CPU可以包含接收通用机器代码并自动将通用机器代码调整到其本机代码中的能力?

通用机器代码规范必须足够通用,以涵盖正常的机器代码功能.

当然,如果通用机器代码确实有效,人们可能会想要一个由所有操作系统处理的通用可执行格式.这样,可执行文件不需要在OS上进行更改.这导致需要专门针对机器进行通用的框架.更多的细节将是操作系统特定的功能,输入和输出的能力超出我所知的范围.

Universal Machine Code编译可执行文件:

优点:

  • 与本机编译的可执行文件几乎相同的大小
  • 几乎如果不是本机编译可执行文件的相同性能

缺点:

  • 稍微(希望不存在)加载速度较慢,因为它在ram中加载可执行文件时将通用机器代码转换为本机机器代码

这可行吗?

编辑:

我用过Java,在其中制作游戏.它不像我想的那样普遍,也不像友好.*它是由Oracle维护的自己的编程语言.专有和有点太大.需要在某些机器上安装.

更具体地说,我不是在谈论使用新的编程语言.我正在谈论拥有一种新的机器代码语言,该语言拥有足够的额外信息,在执行时,会将一个非常薄的过程转换为架构的机器代码.这样C编译器就可以将它们的可执行文件编译成通用机器代码,并且可执行文件可以在任何地方运行.

assembly computer-science machine-code computer-architecture

3
推荐指数
1
解决办法
1983
查看次数

如何表示c ++ struct中的每个mips指令行?

我正在尝试使用c ++模拟虚拟MIPS架构.在这个过程中,我必须将mips体系结构的每一行存储为struct并将其存储到vector中,这样我就可以模拟5个阶段的管道.我的问题是,我怎样才能代表每一条指令,例如:

Loop: ST R1 R2 //store to M[R2] the contents of R1
ADD R1 R2 R3  // R1 R2 and R3 are register
SUB R1 1
BRNZ  R1 Loop //if R1 is not 0 then loop
Run Code Online (Sandbox Code Playgroud)

每一行看起来都不同,我试图找到一种在struct中表示这种情况的通用方法.

c c++ mips computer-architecture

3
推荐指数
1
解决办法
926
查看次数

MIPS:从命令行参数中读取字符串

我是大会的新手.我在从命令行参数中读取字符串时遇到了一些麻烦.

我想将thisismymessage第二个参数中的字符串读入缓冲区.

我想过使用SYSCALL,但不知道如何使用.

$ spim -f program.s file thisismymessage
Run Code Online (Sandbox Code Playgroud)

assembly mips computer-architecture spim command-line-arguments

3
推荐指数
1
解决办法
1万
查看次数

可能根本不需要虚拟内存,而只需要物理内存即可运行(实际上,大多数嵌入式系统都以这种方式运行)。怎么样?

我正在学习计算机体系结构,并碰到一个说法:“完全没有虚拟内存就可以运行,而只有物理内存(实际上,大多数嵌入式系统都以这种方式运行)”。

是这样吗?如果是,那么我想知道如何?

谢谢。

embedded operating-system computer-architecture

3
推荐指数
2
解决办法
2328
查看次数

在英特尔酷睿i3/i7的情况下从高速缓存设置中逐出数据之后的数据

L1/L2缓存包含在Intel和L1/L2缓存中是8路相关性,意味着在一组中存在8条不同的缓存线.缓存行作为一个整体操作,意味着如果我想从缓存行中删除几个字节,整个缓存行将被删除,而不是我想要删除的那些字节.我对吗 ?

现在,我的问题是,无论是通过某个其他进程还是使用clflush(手动逐出缓存行/块),从缓存中删除/逐出集合的缓存行,系统是否会将该缓存行的驱逐数据存储在某处(在任何缓冲区,寄存器等),以便下次它可以从该位置加载数据以减少延迟,与从主存储器或更高级别的缓存加载数据相比,或者总是使缓存中的数据无效并且下次加载下一个更高级别的数据.

任何建议或文章的任何链接将受到高度赞赏.提前致谢.

architecture operating-system processor cpu-architecture computer-architecture

3
推荐指数
1
解决办法
743
查看次数

MIPS流水线时序图

我想确认以下时序图是否适用于MIPS 5阶段管道(*=停顿):

               |  1 |  2 |  3 |  4 |  5 |  6 |  7 |  8 |  9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
LW R1, 0(R4)   | IF | ID | EX |  M |  W |    |    |    |    |    |    |    |    |    |    |    |
LW R2, 400(R4) |    | IF | ID | EX |  M |  W |    |    |    |    |    | …
Run Code Online (Sandbox Code Playgroud)

pipeline mips computer-architecture

3
推荐指数
1
解决办法
3801
查看次数

SSE FP单元是否检测到0.0个操作数?

根据我之前的问题,我的想法是在系数m_a,m_b为1.0或0.0时通过去除计算来优化算法.现在我尝试优化算法并得到一些我无法解释的奇怪结果.

第一个分析仪运行100k样品.从文件(!)读取参数值:

b0 = 1.0 b1 = -1.480838022915731 b2 = 1.0

a0 = 1.0 a1 = -1.784147570544337 a2 = 0.854309980957510

慢

第二个分析仪运行相同的100k样本.从文件(!)读取参数值:

b0 = 1.0 b1 = -1.480838022915731 b2 = 1.0

a0 = 1.0 a1 = -1.784147570544337 a2 = 0.0 <---只有a2不同!

快速

在图中,左侧的数字(灰色背景)表示所需的CPU周期.因为参数a2 = 0.0的清晰可见的第二次运行要快得多.

我检查了调试和发布代码之间的区别.发布代码更快(正如预期的那样).修改参数a2时,调试和释放代码具有相同的奇怪行为.

然后我检查了ASM代码.我注意到使用了SSE指令.这是有效的,因为我用/ arch:SSE2编译.因此我禁用了SSE.生成的代码不再使用SSE,性能不再依赖于参数值a2(如预期的那样)

因此,我得出的结论是,当使用SSE并且SSE引擎检测到a2为0.0时,它们是某种性能优势,因此省略了过时的乘法和减法.我从来没有听说过这个,并试图找到信息,但没有成功.

那么有人对我的表现结果有解释吗?

为完整起见,这是发布版本的相关ASM代码:

00F43EC0  mov         edx,dword ptr [ebx]  
00F43EC2  movss       xmm0,dword ptr [eax+edi*4]  
00F43EC7  cmp         edx,dword ptr [ebx+4]  
00F43ECA  je          $LN419+193h (0F43F9Dh)  
00F43ED0  mov         esi,dword ptr [ebx+4]  
00F43ED3  lea         eax,[edx+68h]  
00F43ED6  lea …
Run Code Online (Sandbox Code Playgroud)

c++ performance sse computer-architecture

3
推荐指数
1
解决办法
200
查看次数

什么是计算机科学的目标架构?

我是编程的初学者,想下载一个好的C编译器来练习编码.所以我想到了海湾合作委员会并开始了一项小规模的研究.我读了一篇关于维基百科的文章.文章提到了目标架构,我不知道.任何人都可以告诉我它的含义,以及我可以参考的任何来源以获取更多信息.提前致谢.

architecture compiler-construction gcc computer-architecture

3
推荐指数
1
解决办法
573
查看次数

标志幅度用于表示负数吗?

我知道这两个补码用于表示负数,但也有使用符号幅度的方法.标志幅度是否仍用于表示负数?如果不是之前使用的地方呢?一台机器如何使用两个补码来解释负数,能够通信并理解另一台使用符号幅度的机器?

c binary networking decimal computer-architecture

3
推荐指数
1
解决办法
280
查看次数