assembly - 8086多处理有什么标准吗?

标签 assembly x86 history locking multiprocessing

当我制作 8086 仿真器时,我注意到有一个 LOCK 前缀用于在多处理器环境中进行同步。然而,我所知道的唯一用于 x86 arch 的多任务处理。涉及使用直到奔腾或 486 才出现的 APIC。

8086 多任务处理是否有任何类型的标准,或者它是由某些制造商对指令集和/或特殊端口的特定扩展来完成的?

按照标准,我的意思是:如果 2 个处理器都使用相同的内存,您如何将它们分开?如果没有某种方法让每个处理器执行不同的代码,这是不可能的。 (或者只在一个处理器上引起中断)

最佳答案

How do you separate the 2 processors if they both use the same memory?

如果他们通过 Intel 的 MULTIBUS 访问相同的内存,那么 LOCK 前缀会导致这种序列化。

如果内存本地安装在一个处理器的电路板上,那么 LOCK 前缀不会阻止其他处理器通过 MULTIBUS 进入并同时访问该电路板的内存。在这种配置下,程序员将不得不玩其他游戏来锁定总线(并在完成内存操作后解锁总线)。

关于assembly - 8086多处理有什么标准吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2778278/

相关文章:

c - x86 程序集中 '_emit 0Fh, _emit 31h' 是什么意思?

gcc - GNU 程序集内联 : what do %1 and %0 mean?

c++ - 用于程序内容的快速伪随机数生成器

javascript - 使用 AJAX/jQuery 动态更改页面内容并设置哈希值

assembly - 自修改内存复制例程练习,6502 ASM

assembly - ARM 汇编器中的寄存器操作数是如何编码的?

c - 代码中的函数会使速度变慢吗?

java - Java 发明了接口(interface)吗?

eclipse - "svn blame"的 GUI,带有历史 slider

programming-languages - 为什么尽可能避免指令分支是好的?