标签: microprocessors

FIQ和IRQ中断系统有什么区别?

我想知道任何微处理器中FIQ和IRQ中断系统之间的区别,例如:ARM926EJ.

drivers arm interrupt isr microprocessors

69
推荐指数
5
解决办法
9万
查看次数

什么是用于微处理器的堆栈指针?

我正准备进行微处理器考试.如果使用程序计数器来保存下一条指令的地址,那么堆栈指针的用途是什么?

stack microprocessors

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

为什么x86是小端?

我最近一直在问自己的一个真正的问题是,设计选择带来了x86是一个小端架构而不是大端架构?

x86 intel cpu-architecture endianness microprocessors

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

什么是16位,32位和64位架构?

在微处理器和/或操作系统的情况下,16位,32位和64位架构意味着什么?

在微处理器的情况下,它是指General Purpose Registers的最大尺寸或s的大小Integer或数量Address-line或s的数量Data Bus line或者是什么?

说" DOS is a 16-bit OS"," Windows in a 32-bit OS"等是什么意思?

64-bit operating-system 32-bit 16-bit microprocessors

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

记忆围栏如何工作?

我需要了解多核机器中的内存屏障.说我有这个代码

核心1

mov [_x], 1; mov r1, [_y]    
Run Code Online (Sandbox Code Playgroud)

核心2

mov [_y], 1; mov r2, [_x]
Run Code Online (Sandbox Code Playgroud)

现在没有内存栅栏的意外结果是r1和r2在执行后都可以为0.在我看来,为了解决这个问题,我们应该在两个代码中都放置内存栅栏,因为将它放到一个代码中仍然无法解决问题.如下......

核心1

mov [_x], 1; memory_fence; mov r1, [_y]  
Run Code Online (Sandbox Code Playgroud)

核心2

mov [_y], 1; memory_fence; mov r2, [_x]
Run Code Online (Sandbox Code Playgroud)

我的理解是正确的还是我仍然缺少某些东西?假设架构是x86.另外,有人可以告诉我如何在C++代码中放置内存栅栏吗?

c parallel-processing assembly multicore microprocessors

24
推荐指数
1
解决办法
4065
查看次数

任何汇编语言被认为有用所需的最小指令集是什么?

我正在研究汇编编程,所以我决定尝试用软件实现一个"虚拟微处理器",它有寄存器,标志和RAM来处理,用变量和数组实现.但是,由于我只想模拟任何微处理器的最基本行为,我想创建一个只有基本指令的汇编语言,只有那些没有它就没用的指令.我的意思是,有汇编语言可以执行乘法和交换寄存器值等,但这些操作不是基本的,因为您可以使用更简单的指令来实现它们.我不想实现那些指令.

我可以想象一些指令(我相信)必须始终以任何汇编语言存在,例如MOV移动字节和JP将指令指针发送到另一个地址.

你能否提出一套最基本和最基本的装配说明?谢谢!

assembly instruction-set microprocessors vm-implementation

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

负数在内存中存储为2的补码,CPU如何知道它是负数还是正数?

-1可以用4位二进制表示为(2的补码)1111

图15也表示为1111.

那么,当CPU从内存中获取值时,CPU如何区分15和-1?

binary unsigned sign numeric microprocessors

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

如何导致指令缓存未命中?

我的任务是生成一定数量的数据缓存未命中和指令缓存未命中.我已经能够毫无问题地处理数据缓存部分.

所以我离开了生成指令缓存未命中.我不知道是什么导致这些.有人可以建议一种生成它们的方法吗?

我在Linux中使用GCC.

c linux performance microprocessors

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

页面表和页面目录之间的区别

我经常在微处理器和微控制器Paradigm中听到术语地址空间.我知道地址用于指代物理内存中的特定内存块(主要).

如果我是对的,地址空间是所有这些地址的超级集合.对?

通过使用虚拟内存/分页,我们使用二级存储扩展地址空间.

在这个范例中,页表,页表项和页面目录究竟是什么?我知道第一个p.memory是分段和逻辑上的,这些段被分成页面.那么页面表究竟是什么?包含Pages的表格?什么是页面目录页表的超级表?

assembly intel microprocessors

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

CPU TSC获取操作,尤其是在多核多处理器环境中

在Linux世界中,要获得纳秒精度定时器/时钟提示,可以使用:

#include <sys/time.h>

int foo()
{
   timespec ts;

   clock_gettime(CLOCK_REALTIME, &ts); 
   //--snip--      
}
Run Code Online (Sandbox Code Playgroud)

这个答案提出了asm一种用RDTSC指令直接查询cpu时钟的方法.

在多核,多处理器架构中,这个时钟滴答/定时器值如何在多个内核/处理器之间同步?我的理解是,在固有的围栏中完成了.这种理解是否正确?

你能否提出一些可以详细解释这个问题的文件?我对Intel Nehalem和Sandy Bridge微体系结构感兴趣.

编辑

将进程限制为单个核心或cpu不是一种选择,因为该进程非常庞大(就消耗的资源而言)并且希望最佳地利用包含所有核心和处理器的机器中的所有资源.

编辑

感谢您确认TSC在核心和处理器之间同步.但我最初的问题是这种同步是如何完成的?它是否带有某种围栏?你知道任何公共文件吗?

结论

感谢所有输入:以下是此讨论的结论:TSC在初始化时使用在多处理器/多核系统中的核心和处理器之间发生的RESET进行同步.之后,每个Core都是独立的.TSC与锁相环保持不变,这将使频率变化正常化,从而使给定Core内的时钟变化正常化,这就是TSC在核心和处理器之间保持同步的方式.

c assembly multicore cpu-registers microprocessors

14
推荐指数
4
解决办法
7895
查看次数