计算机体系结构3_单处理器内存访问顺序

简介:

一,单处理器访问顺序

     1.指令execute和指令retire

       Instruction execution creates  results and status and determines whether  or not the instruction causes an  exception.

       Instruction retirement  commits the results of instruction execution, in program order, to software-visible resources such as memory, caches, write-combining 

buffers,  and registers, or it causes an exception to occur if instruction execution created one.

       Retire instructions in program order, but implementations can execute instructions in any order, subject only to data dependencies.

      2.读顺序

       Generally, reads do not affect program order because they do not affect the state of software-visible resources other than register contents.

       However, some  system devices might be sensitive to reads. In such a situation software can map a read-sensitive device to a memory  type that enforces strong 

       read-ordering, or use read/write barrier instructions  to force strong read-ordering.

       读不会影响程序运行顺序,因为读不会影响软件可见资源的状态和内容,对于读敏感的设备,软件可以将设备映射到strong-read-ordering的内存,或使用

barrier强制读顺序。

       3.读准则

       对于可缓存的内存,以下规则管理读的顺序:

                          

                    当乱序读对软件透明,与顺序执行具有相同的效果时,乱序读允许。

                   

                     允许预读。

                     

                             

                      当读的位置与写位置相同时,不允许读重排到写前边,否则,可以重排读操作到写操作前边。

                       

                   


        4.写准则

                     写会影响程序运行顺序,因为写会影响软件可见资源的状态和内容,以下规则管理写的顺序:

                     

                     通常不允许乱序写,如果执行乱序写,写操作只有知道前边的操作完成时,才可以写内存。处理器需要在软件不可见的buffer保存乱序写的结果,

                     直到可以将结果写到内存中。

                  

                    对write-combining内存可能会执行乱序写。

                   

                    不允许预测写,像乱序写一样,只有之前所有的操作都完成时,才可以将预写的结果保存到内存中,处理器通过一个私有buffer暂存预写结果直

                    到被这些结果写到内存中。

                  

                    允许将写的结果缓存在buffer中,之后按照程序执行顺序将buffer中结果再写入到主存中。用于暂存写结果的buffer不被软件可见,但是之后

                    对被缓存数据的读写操作可以直接通过此buffer来完成。

                  

                    允许写合并,通过使用使用类型为wc内存或non-temporal store指令,将多个写操作合并为一个写操作。当使用写合并时,其他写不同地址的

                    操作可能会被提前执行,只有当写顺序不影响程序执行顺序时,才可以被使用。


参考:

       AMD64 Architecture Programmer’s Manual Volume 2: System Programming Chpter7

目录
相关文章
|
传感器 人工智能 物联网
C 语言在计算机科学中尤其在硬件交互方面占据重要地位。本文探讨了 C 语言与硬件交互的主要方法,包括直接访问硬件寄存器、中断处理、I/O 端口操作、内存映射 I/O 和设备驱动程序开发
C 语言在计算机科学中尤其在硬件交互方面占据重要地位。本文探讨了 C 语言与硬件交互的主要方法,包括直接访问硬件寄存器、中断处理、I/O 端口操作、内存映射 I/O 和设备驱动程序开发,以及面临的挑战和未来趋势,旨在帮助读者深入了解并掌握这些关键技术。
308 6
|
存储 编译器 Linux
【c++】类和对象(上)(类的定义格式、访问限定符、类域、类的实例化、对象的内存大小、this指针)
本文介绍了C++中的类和对象,包括类的概念、定义格式、访问限定符、类域、对象的创建及内存大小、以及this指针。通过示例代码详细解释了类的定义、成员函数和成员变量的作用,以及如何使用访问限定符控制成员的访问权限。此外,还讨论了对象的内存分配规则和this指针的使用场景,帮助读者深入理解面向对象编程的核心概念。
619 4
|
存储 监控 Java
深入理解计算机内存管理:优化策略与实践
深入理解计算机内存管理:优化策略与实践
|
11月前
|
存储 缓存 数据安全/隐私保护
DMA(Direct Memory Access):直接内存访问
DMA(Direct Memory Access)是一种允许外设直接与内存进行数据传输的技术,无需 CPU 干预。它通过减轻 CPU 负担、提高数据传输效率来提升系统性能。DMA 的工作模式包括直接模式和 FIFO 模式,数据传输方式有单字传送和块传送,寻址模式有增量寻址和非增量寻址。通过缓存一致性协议、同步机制、数据校验和合理的内存管理,DMA 确保了数据在内存中的一致性和完整性。
|
缓存 算法 数据处理
如何选择合适的内存访问模式
【10月更文挑战第20天】如何选择合适的内存访问模式
370 1
|
存储 容器
内存越界访问(Out-of-Bounds Access)
【10月更文挑战第12天】
1410 2
|
Rust 编译器
|
存储 网络协议 大数据
一文读懂RDMA: Remote Direct Memory Access(远程直接内存访问)
该文档详细介绍了RDMA(远程直接内存访问)技术的基本原理、主要特点及其编程接口。RDMA通过硬件直接在应用程序间搬移数据,绕过操作系统协议栈,显著提升网络通信效率,尤其适用于高性能计算和大数据处理等场景。文档还提供了RDMA编程接口的概述及示例代码,帮助开发者更好地理解和应用这一技术。
|
存储 安全 Linux
将文件映射到内存,像数组一样访问
将文件映射到内存,像数组一样访问
216 1
|
编译器 Linux C语言
不对齐的内存访问 【ChatGPT】
不对齐的内存访问 【ChatGPT】
208 12

热门文章

最新文章