当我制作 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/