cpu是如何选择需要访问的设备?

在计算机中,cpu面对很多的存储器(包括RAM,ROM)。在CPU眼里,这些存储器就是
一个完整的逻辑存储器,他们共同组成了内存地址空间,每个设备都对应一个地址范围,
只要cpu访问相应的地址范围,就相当于访问该设备的内存(比如显存)。

可是,cpu是怎样根据指令选择相应设备的?
比如指令:mov ax, [b800:0],这是伪代码,我想说,如果要把b800:0(在8086cpu中,这
属于显存)这个地址的内容复制到ax,那么cpu如何去根据这条指令判断出来要去显存这个
硬件去读取数据,而不是别的什么设备?

我知道cpu选择设备好像是通过控制总线来完成的,但不是很清楚它的具体过程是怎样的?
我google过关键词:"cpu 控制总线 设备选择"

请告诉我这个过程是怎样的?或者告诉我应该去了解什么模块的内容?

找一本《计算机组成原理》的书看看。现代计算机一般都有io控制器(俗称南桥),这些操作都是南桥做的。

根据指令类型判断进行的操作,通过数据总线,地址总线,控制总线进行操作。建议学习《计算机组成原理》

当CPU需要读取一个地址的内容时, CPU会把需要访问的地址当做一个数据通过DMI总线(CPU链接北桥的总线)传送给北桥,当然这个是会加上一些标识以方便北桥识别,这个数据是需要访问的内存地址, 当北桥(内存控制器)收到这个地址后,通过集成在控制器中的"逻辑映射", 内存控制器就知道这个地址对应了了那个rank(p-bank),那个L-bank,L-bank中的那个row地址,L-bank中的那个Column地址,及确定了那个CS#信号有效(选择rank),那组bank#信号有效(选择L-bank), 然后北桥在遵从SPD设定的内存的时序下按照固定的时序发送CS#信号 bank#信号 row address
column address 特殊状态下还会有DQM信号 BL信号等等