1
kljsandjb 2023-09-23 19:09:30 +08:00 via Android 1
CPU 应该不用知道的,只需要去写端口就行,至于逻辑是由程序决定的,例如驱动。之前写过一次模拟器,就知道 CPU 的指令都是通用的,具体行为随硬件而定
|
2
test0x01 2023-09-23 21:42:14 +08:00 via Android
我的理解是这两条指令会产生中断,由中断处理器去处理。
|
3
mantouboji 2023-09-24 13:41:06 +08:00 2
看来你没有学过计算机体系结构和计算机组成原理两门基础课。
IN/OUT 这是 8086 实模式下的东西都是四五十年前的了,没有必要了解。 简单滴说,I/O 处理分 独立 I/O 和 存储器映射 I/O 两大类。像 8086 这种体系结构提供了独立 I/O 的指令,把 I/O 设备放在了独立的地址空间,在执行 in/out 指令的时候,有一个专门的管脚( 8086/8088 是 PIN26 )指示本次操作地址总线上输出的是内存地址还是 I/O 端口地址,外围地址译码电路会根据这个信号去译码。 https://www.tutorialspoint.com/microprocessor/microprocessor_8086_pin_configuration.htm 存储器映射模式就是把 I/O 设备占用的地址空间统一编码在内存空间里,访存和访 I/O 统一处理。PCI 总线设备都是这样的。68000 类、各种 RISC 体系都是这样。 |
4
tek 2023-09-24 17:29:48 +08:00 1
使用端口号的一部分来决定去向。类似于电话号码使用区号决定如何中转,南北桥则类似于路由的角色
|
5
dududupapapa OP @tek 嗯。。。南桥是一个路由,北桥也是一个路由,但是 cpu 是怎么通过端口号知道要选择这两个路由中的哪一个的呢
|
6
dududupapapa OP @tek 我看到有个说法是,南北桥都有特定的端口范围,在哪个范围内,就发送给哪个桥,不知道是不是这样
|
7
tek 2023-09-25 07:01:45 +08:00 1
是的,根据端口号范围,桥决定把消息转给那个设备。比如说会把 0x100-0x10f 间的访问都转给设备 A. 0x110-0x11f 转给设备 B. 设备 A 自己解释低 4 位的 0x0-0xf 16 个地址的意义
|
8
tek 2023-09-25 07:06:42 +08:00
南桥有时会被看做北桥的一个设备。类似于一个省级的分拣中心,由省再分发到市
|