计算机体系结构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

时间: 2025-01-25 12:20:00

计算机体系结构3_单处理器内存访问顺序的相关文章

微机原理-求问一个计算机组成原理内存访问边界对齐的问题

问题描述 求问一个计算机组成原理内存访问边界对齐的问题 看不懂对于地址Oxff00ff01为什么要先输出高30位,,,还有bank0-3每个保存7位一个字,,但是图上为什么地址04和00都在bank0.,bank0到底是一个怎么样的存储空间,一个地址四个存储空间,那这四个是相当于一个地址对应一行吗,地址加4才读取bank0的D24-D31又是为什么? 如果有OXff0000f3.是不是bank0-3保存d8-15,d16-23,d24-31,d0-7进行两次总线操作?

《C语言编程魔法书:基于C11标准》——第2章 学习C语言的预备知识 2.1 计算机体系结构简介

第2章 学习C语言的预备知识 我们在第1章已经大致介绍了C语言的概念以及编译.连接流程.我们知道C语言是高级语言中比较偏硬件底层的编程语言,因此对于用C语言的编程人员而言,了解一些关于处理器架构方面的知识是很有必要的,对于嵌入式系统开发的程序员而言更是如此了. 另外,C语言中有很多按位计算以及逻辑计算,所以对于初学者来说,如果对整数编码方式等计算机基础知识不熟悉,那么对这些操作的理解也会变得十分困难.因此,本章将主要给C语言初学者.同时也是计算机编程初学者,提供计算机编程中会涉及的基本知识,这样

《高性能科学与工程计算》——第1章 当代处理器1.1 存储程序的计算机体系结构

第1章 当代处理器 在1975-1995年的"旧时代"的科学计算时期,先进的高性能系统是专门为HPC市场设计的,主要的厂商有Cray.CDC.NEC.Fujitsu和Thinking Machines等.在性能和价格方面,这些系统远远超越了标准的"商品"电脑.20世纪70年代初发明的单芯片通用微处理器,是20世纪80年代末唯一足够成熟.可以打入HPC市场的技术.直到20世纪90年代末,标准的工作站集群甚至基于PC的硬件至少在理论峰值性能上才具备相应的竞争力.如今,情

非一致性内存访问的读写锁

原文地址,译文地址,译者: 李杰聪,校对:郑旭东 原文作者: Irina Calciu         Brown University        irina@cs.brown.edu Dave Dice          Oracle Labs             dave.dice@oracle.com Yossi Lev           Oracle Labs             yossi.lev@oracle.com Victor Luchangco    Oracle

CUDA内存访问(一)提高篇------按部就班 ------GPU的革命

谈到内存的访问,其实也就是几个API函数的调用,感觉也没什么好讲的,知道cudaMalloc,知道cudaMemcpy,还有cudaFree,就应该可以对device上的内存进行分配,然后就可以在device上使用内存.但是就像我们看运动会一样,只看100米的那不到10秒的时间,也许你只会说,他跑得真快.又有多少人能清楚其过程中的磨炼啦?要真正理解device上内存的调度访问,让我们的程序达到更快的速度,就得对内存访问的情况做更深入的了解,明白其中的过程. 我记得大学刚开始上编程语言的课程的时候

《新编计算机科学概论》一2.2  计算机体系结构概述

2.2 计算机体系结构概述 体系结构的概念是从软件设计者的角度对计算机硬件系统的观察和分析.结构是指各部分之间的关系.通过分析系统的组成和结构,可以指导更好地进行软件设计. 2.2.1 计算机体系结构的基本概念 计算机体系结构 计算机体系结构(computer architecture)通常是指程序设计人员所见到的计算机系统的属性,是硬件子系统的结构概念及其功能特性.经典的"计算机体系结构"定义是1964年C. M. Amdahl在介绍IBM 360系统时提出的. 按照计算机系统的多级

《操作系统真象还原》——0.7 内存访问为什么要分段

0.7 内存访问为什么要分段 按理说咱们应该先看看段是什么,不过了解段是什么之前,先看看内存是什么样子,如图0-2所示. 内存按访问方式来看,其结构就如同上面的长方形带子,地址依次升高.为了解释问题更明白,我们假设还在实模式下,如果读者不清楚什么是实模式也不要紧,这并不影响理解段是什么,故暂且先忽略. 内存是随机读写设备,即访问其内部任何一处,不需要从头开始找,只要直接给出其地址便可.如访问内存0xC00,只要将此地址写入地址总线便可.问题来了,分段是内存访问机制,是给CPU用的访问内存的方式,

计算机体系结构4_分级缓存

一,处理器和内存系统结构                                                        主存在内存体系结构距离CPU最远端,缓存在内存体系结构距离CPU最近端.                EU直接读取L1指令缓存,通过LSU读/写L1数据缓存,在LSU与L1数据缓存之间是write buffer,用于回写.                 write buffer与write-combining buffers连接,后者通过系统总线与主存连接.

win7系统电脑打开ug8.5提示“内部错误 内存访问违例”怎么办

  win7系统电脑打开ug8.5提示"内部错误 内存访问违例"怎么办?专业设计人员制作不同的图片需要不同的软件,比如三维建筑我们都用"Auto cad",平面设计大多用户都用"Photoshop"等等.但是最近有位win7纯净版系统用户使用Ug进行三维设计说,打开ug8.5提示"内部错误 内存访问违例"导致软件没办法使用,怎么办呢?经测试发现,这是由于UG程序中的"DialogMemory.dlx"出错导