KR20190086502A - 제한된 저장소 오퍼런드 요청 처리의 일시적 금지 - Google Patents

제한된 저장소 오퍼런드 요청 처리의 일시적 금지 Download PDF

Info

Publication number
KR20190086502A
KR20190086502A KR1020197017086A KR20197017086A KR20190086502A KR 20190086502 A KR20190086502 A KR 20190086502A KR 1020197017086 A KR1020197017086 A KR 1020197017086A KR 20197017086 A KR20197017086 A KR 20197017086A KR 20190086502 A KR20190086502 A KR 20190086502A
Authority
KR
South Korea
Prior art keywords
repository
operand request
operand
processing
instruction
Prior art date
Application number
KR1020197017086A
Other languages
English (en)
Other versions
KR102238188B1 (ko
Inventor
브루스 콘래드 지아메이
크리스찬 자코비
청-렁 슘
도날드 윌리엄 슈미트
다니엘 로사
앤서니 사포리또
Original Assignee
인터내셔널 비지네스 머신즈 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인터내셔널 비지네스 머신즈 코포레이션 filed Critical 인터내셔널 비지네스 머신즈 코포레이션
Publication of KR20190086502A publication Critical patent/KR20190086502A/ko
Application granted granted Critical
Publication of KR102238188B1 publication Critical patent/KR102238188B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3824Operand accessing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/452Instruction code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/602Details relating to cache prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • G06F2212/621Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]

Abstract

제한된 저장소 오퍼런드 요청 처리의 일시적 금지
제한됨으로 식별된 저장소 오퍼랜드 요청의 처리가 선택적으로, 일시적으로 금지된다. 상기 처리는 컴퓨팅 환경의 다수 처리 장치들에 의해서 공유된 공동 저장소 위치에 대한 저장소 오퍼랜드 요청이 제한되었는지를 결정하는 단계와, 상기 저장소 오퍼랜드 요청이 제한되었다고 결정하는 것에 기초하여, 상기 저장소 오퍼랜드 요청에 따른 상기 공동 저장소 위치에 대한 액세스를 요청하는 것을 일시적으로 금지하는 단계를 포함한다. 상기 처리를 수행하는 처리 장치는, 상기 처리가 상기 처리 장치 전용의 캐시를 사용하여 달성될 수 있는 경우, 상기 금지하는 단계를 수행함이 없이, 상기 제한된 저장소 오퍼랜드 요청의 처리를 계속한다. 그렇지 않는 경우, 상기 금지하는 단계는 상기 저장소 오퍼랜드 요청과 연관된, 명령, 또는 명령의 연산이 완료될(next to complete)때까지 계속될 수 있다.

Description

제한된 저장소 오퍼런드 요청 처리의 일시적 금지
[0001] 본 발명의 하나 또는 그 이상의 실시 예들은, 일반적으로, 컴퓨팅 환경 내에서의 처리에 관한 것으로, 특히 그러한 처리를 개선하는 것에 관한 것이다.
[0002] 다수 처리 컴퓨팅 시스템(a multiprocessing computing environment)에서, 중앙 처리 장치들(CPUs) 또는 코어들과 같은, 다수 처리 장치들(multiple processing units)은, 공동 주 저장소 위치들(common main storage locations)과 같은 공동 저장소에 대한 액세스를 공유하기 위해 연결된다. 구성을 가로지르는 저장소 계층 구조(the storage hierarchy across the configuration)는 각 처리 장치에 로컬인(local) 다양한 캐시 수준들(cache levels), 여러 처리 장치들 사이에 공유인 다양한 캐시 수준들, 및 주 저장소(main storage)를 포함할 수 있다. 처리 장치가 저장소 위치(storage location)를 갱신(update)해야 할 때, 저장소의 라인(a line of storage)은 저장소 계층 구조에 의하여 처리 장치로 넘어가고 (transferred), 상기 라인은 상기 갱신을 수행하는 처리 장치에 로컬인(local) 캐시 수준 내에서 배타적으로 홀드 된다(exclusively held). 저장소의 라인이 처리 장치에 의해서 배타적으로 홀드 될 때, 다른 처리 장치들은, 상기 라인이 릴리스 된(released) 후 더 이상 어떠한 처리 장치에 의해서도 배타적으로 홀드 되지 않을 때까지, 그 저장소의 라인을 갱신하거나 또는 읽는 것이 허용되지 않는다.
[0003] 개별 처리 장치 성능, 예를 들어, 파이프라이닝(pipelining), 수퍼스칼러(superscalar), 비순차적 실행(out-of-order execution), 및 분기 예측(branch prediction)과 같은, 개별 처리 장치 성능을 향상시키기 위한 처리 장치 특징들은 추측 메모리 요청들(speculative memory requests)을 초래할 수 있다. 추측 요청은 특정 프로그램 경로를 완료하기 위해 요구되거나 또는 요구되지 않을 수 있는 것이다. 요청이 요구될 지 또는 요구되지 않을지를 결정하는 조건들은 추측 요청이 시작되는 시각에는 결정되어 있지 않다.
[0004] 특허청구범위 청구항 1에서 청구된 컴퓨팅 환경에서 처리를 용이하게 하기 위한 방법, 및 대응 시스템 및 컴퓨터 프로그램의 제공을 통해, 본 발명의 하나 또는 그 이상의 실시 예에서, 종래 기술의 특정 단점들이 해결되고 부가적인 장점들이 제공된다.
[0005] 바람직하게도, 컴퓨팅 환경 처리는, 컴퓨팅 환경의 다수의 처리 장치들에 의해서 공유된 공동 저장소 위치에 대응하는, 특정 저장소 오퍼랜드 요청, 또는 액세스가 제한되어야 함을 프로그램이 처리 장치에 신호하는 퍼실리티(또는 기능)를 제공함에 의해서 향상된다. 특정 저장소 오퍼랜드 요청이 제한되었음을 식별하는 것에 기초하여, 만일 식별된 상기 저장소 오퍼랜드의 처리가 상기 처리 장치에 전용인 캐시를 사용하여 달성될 수 없다면, 상기 처리 장치는 상기 저장소 오퍼랜드 요청의 처리를 연기할 수 있다(defer). 식별된 상기 저장소 오퍼랜드를 명시하는 명령(또는 명령의 연산) 이전의 명령들이 처리를 완료했을 때까지 상기 처리는 연기될(일시적으로 금지될) 수 있다. 바람직하게도 이 것은 제한된 것으로 식별된 상기 저장소 오퍼랜드 액세스가 요구될 때만 수행되도록 하고, 만일 상기 저장소 오퍼랜드 요청의 처리 전용 캐시만의 사용으로 달성될 수 없다면 추측으로는(speculatively) 수행되지 않도록 한다. 바람직하게도, 그 결과, 공동의 공유된 저장소의 라인이 컴퓨팅 환경을 비생산적으로 횡단하는 횟수가 감소될 수 있고, 이 때문에 전체 시스템 성능이 증가 될 수 있다.
[0006] 본 발명의 하나 또는 그 이상의 구현들에서, 상기 일시적으로 금지하는 단계는 상기 저장소 오퍼랜드 요청을 처리하기 위하여 상기 컴퓨팅 환경의 다수 처리 장치들에 의해서 공유된 공동의 저장소 위치에 대한 액세스를 요구하는 상기 저장소 오퍼랜드 요청의 처리를 금지하는 단계를 포함한다. 더 구체적으로는, 상기 방법은 처리 장치에 의해서 수행될 수 있고, 상기 처리 장치는 상기 저장소 오퍼랜드 요청이 상기 처리 장치의 전용 캐시(a private cache)를 히트(hit) 하는지를 결정하며, 상기 저장소 오퍼랜드 요청이 상기 전용 캐시에서 히트하는 것에 기초하여, 상기 금지하는 단계를 수행함이 없이, 상기 전용 캐시를 사용하여 상기 저장소 오퍼랜드 요청의 처리를 계속할 수 있다.
[0007] 본 발명의 하나 또는 그 이상의 실시 예들에서, 상기 일시적으로 금지하는 단계는 상기 저장소 오퍼랜드 요청과 연관된, 명령, 또는 명령의 연산이 완료될(next to complete) 때까지 상기 저장소 오퍼랜드 요청의 처리를 금지하는 단계를 포함한다. 본 발명의 개선된 실시 예들에서, 상기 방법은 상기 컴퓨팅 환경의 다수 처리 장치들에 의해서 공유된 공동의 저장소 위치에 대한 액세스를 요구하는 상기 저장소 오퍼랜드 요청을 저장소 오퍼랜드 요청들의 큐(queue)에 배치하는 단계(placing)를 포함한다. 예로서, 상기 일시적으로 금지하는 단계는 상기 저장소 오퍼랜드 요청과 연관된, 명령, 또는 명령의 연산이 완료될(next to complete) 때까지 저장소 오퍼랜드 요청들의 큐(queue)에 상기 저장소 오퍼랜드 요청을 유지하는 단계(retaining)를 포함한다.
[0008] 본 발명의 하나 또는 그 이상의 구현들에서, 상기 방법은 상기 저장소 오퍼랜드 요청이 제한되었음을 식별하는 단계를 더 포함한다. 상기 식별하는 단계는 다음 순차 명령의 오퍼랜드와 연관된 액세스 의도(access intent)를 표시하는 액세스 의도 명령을, 처리 장치에 의해서, 획득하는 단계를 포함하고, 상기 액세스 의도 명령은 상기 저장소 오퍼랜드 요청의 사용이 제한되었음을 표시한다. 본 발명의 하나 또는 그 이상의 구현들에서, 상기 액세스 의도 명령은 다음 명령 액세스 의도 명령이 될 수 있고, 상기 저장소 오퍼랜드 요청이 제한되었음을 식별하는 단계는 상기 다음 명령 액세스 의도 명령 내에 제한 액세스 의도 코드(a restrain access intent code)를 제공하는 단계를 포함할 수 있다.
[0009] 본 발명의 하나 또는 그 이상의 실시 예들에서, 상기 저장소 오퍼랜드 요청은 명령 또는 명령의 연산과 연관된 추측 저장소 오퍼랜드 요청(a speculative storage operand request)이다.
[0010] 추가적인 특징들 및 장점들은 본 명세서에 기술 된 기술들을 통해 실현된다. 다른 실시 예들도 본 명세서에 상세히 설명되고 청구된 실시 예들의 일부로서 고려된다.
[0011] 본 발명의 하나 또는 그 이상의 실시 예들이 본 명세서에 특별하게 설명되고 청구범위의 청구항들에서 예들로서 명확하게 청구된다. 본 발명의 하나 또는 그 이상의 실시 예들의 전술한 목적, 특징들 및 장점들은 첨부 된 도면들과 함께 설명하는 다음의 상세한 설명으로부터 명백하다.
도 1는 본 발명의 하나 또는 그 이상의 실시 예들을 구체화하고 사용하기 위한 컴퓨팅 환경의 일 예를 도시한다;
도 2는, 본 발명의 하나 또는 그 이상의 실시 예들을 구체화하고 사용하기 위한 컴퓨팅 환경의 다른 예를 도시한다;
도 3은 본 발명의 하나 또는 그 이상의 실시 예들을 구체화하고 사용하기 위한 다수 처리 장치 환경의 일 예를 도시한다;
도 4는 본 발명의 하나 또는 그 이상의 실시 예들에 따라, 처리의 일 예를 도시한다;
도 5는, 본 발명의 하나 또는 그 이상의 실시 예들에 따라, 처리의 더 상세한 예를 도시한다;
도 6a는, 본 발명의 하나 또는 그 이상의 실시 예들에 따라, 유용한 명령 포맷의 일 실시 예를 도시한다;
도 6b는, 본 발명의 하나 또는 그 이상의 실시 예들에 따라, 도 6a에 도시한 바와 같은 명령 포맷의 액세스 의도 제어 필드의 일 실시 예를 도시한다;
도 7은, 본 발명의 하나 또는 그 이상의 실시 예들에 따라, 도 6a-6b에 도시한 바와 같은 명령을 사용하여 처리 동작을 제어하는 데에 사용될 수 있는 흐름도의 일 실시 예를 도시한다;
도 8a-8b는, 본 발명의 하나 또는 그 이상의 실시 예들에 따라, 저장소 오퍼랜드 요청 처리의 추가의 예를 도시한다;
도 9a는 본 발명의 하나 또는 그 이상의 실시 예들을 구체화하고 사용하기 위한 컴퓨팅 환경의 다른 예를 도시한다;
도 9b는 도 9a의 메모리의 더 상세한 사항을 도시한다.
도 10은 클라우드 컴퓨팅 환경의 일 실시 예를 도시한다; 그리고
도 11은 추상화 모델 계층(abstraction model layers)의 일 예를 도시한다.
[0012] 전술 한 바와 같이, 개별 처리 장치 성능, 예를 들어, 파이프라이닝 (pipelining), 수퍼스칼러(superscalar), 비순차적 실행(out-of-order execution), 및 분기 예측(branch prediction)과 같은, 개별 처리 장치 성능을 향상시키기 위한 처리 장치 특징들은 추측 메모리 요청들(speculative memory requests)을 초래할 수 있다. 전용 저장소 위치들에 대한 추측 요청은 바람직할 수는 있지만, 공동의 저장소 위치들에 대한 과도한 추측 요청은 전체 시스템 성능에 해로울 수 있다. 불필요한 추측 요청을 위해, 공유된 저장소의 라인은 어떠한 개별 프로세스에도 유익이 없이 저장소 계층 구조를 횡단할 수 있다.
[0013] 공동의 공유 저장소 위치에 대한 처리 장치들 사이의 충돌(contention)은 다음의 경우에 증가한다: 컴퓨팅 환경 또는 컴퓨팅 구성에서 처리 장치에 의해 추측 메모리 요청 수가 증가하는 경우, 컴퓨팅 환경에서 처리 장치의 수가 증가 하는 경우, 또는 동시 멀티스레딩(SMT), 등을 구현하는 프로세서에서 스레드들의 수가 증가하는 경우. 처리 장치들 간의 충돌이 증가함에 따라, 각각의 개별 처리 장치가 특정 공유 메모리 위치를 포함하는 저장소의 라인을 성공적으로 획득하는 것이 점점 더 어려워진다. 그 결과, 전체 시스템 성능이 저하 될 수 있다.
[0014] 본 발명의 하나 또는 그 이상의 실시 예에 따라, 특정 저장소 오퍼랜드 액세스 요청이 컴퓨팅 환경 전체의 여러 처리 장치들에 사이에서 공유된 공동의 저장소 위치에 대응함을 프로그램이 처리 장치에 신호하는 퍼실리티가 제공된다. 만일 제한된 것으로 식별된 저장소 오퍼랜드의 처리가 처리 장치에 로컬 또는 전용인 캐시 수준들만을 사용하여 달성될 수 없다면, 상기 처리 장치는 식별된 상기 저장소 오퍼랜드를 명시하는 명령 이전의 명령들이 처리를 완료한 후까지 상기 공동의, 계층구조에 대한 모든 질의들을 연기하기 위해 신호된다. 이 것은 바람직하게도 식별된 상기 저장소 오퍼랜드는 요구될 때만 수행되고 추측으로(speculatively) 수행되지 않도록 해 준다. 그 결과, 공동의 공유된 저장소의 라인이 컴퓨팅 환경을 비생산적으로 횡단하는 횟수가 감소될 수 있고, 이 때문에 전체 시스템 성능이 증가 될 수 있다.
[0015] 본 발명의 하나 또는 그 이상의 실시 예들을 구현하고 사용하는 컴퓨팅 환경의 일 실시 예가 도 1를 참조하여 기술된다. 한 예에서, 컴퓨팅 환경은, 미국, 뉴욕주 아몽크에 소재하는 인터내셔널 비즈니스 머신즈 코포레이션에 의해 공급되는, z/아키텍처에 기초할 수 있다. z/아키텍처의 한 실시 예는, 2015년 3월 발표된 IBM 공보 No. SA22-7832-10의 "z/아키텍처 작동 원리"에 기술되어 있다. Z/ARCHITECTURE는 미국, 뉴욕주 아몽크에 소재하는 인터내셔널 비즈니스 머신즈 코포레이션의 등록 상표이다.
[0016] 또 다른 예에서, 컴퓨팅 환경은 미국, 뉴욕주 아몽크에 소재하는 인터내셔널 비즈니스 머신즈 코포레이션에 의해 공급되는 파우어 아키텍처(Power Architecture)를 기반으로 할 수 있다. 파우어 아키텍처의 한 실시 예는 2015 년 4 월 9 일 발표된 인터내셔널 비즈니스 머신즈 코포레이션"Power ISA ™ Version 2.07B "에 설명되어 있다.POWER ARCHITECTURE 는 미국, 뉴욕주 아몽크에 소재하는 인터내셔널 비즈니스 머신즈 코포레이션의 등록 상표이다.
[0017] 컴퓨팅 환경은 또한 Intel x86 아키텍처를 포함하되, 이에 국한되지 않는 다른 아키텍처를 기반으로 할 수도 있다.  다른 예들도 또한 있다.
[0018] 도 1에 도시 된 바와 같이, 컴퓨팅 환경(100)은, 예를 들어, 노드(10)을 포함하고, 노드(10)은, 예를 들어, 다수의 다른 범용 또는 특수 목적 컴퓨팅 시스템 환경 또는 구성과 동작 가능한, 컴퓨터 시스템/서버(12)를 갖는다. 컴퓨터 시스템/서버(12)와 함께 사용하기에 적합 할 수 있는 잘 알려진 컴퓨팅 시스템들, 환경들 및/또는 구성들의 예로는 퍼스널 컴퓨터(PC) 시스템들, 서버 컴퓨터 시스템들, 씬(thin) 클라이언트들, 씩(thick) 클라이언트들, 핸드헬드 또는 랩탑 장치들, 멀티프로세서 시스템들, 마이크로프로세서-기반 시스템들, 셋톱 박스들, 프로그램 가능 가전 제품들, 네트워크 PC들, 미니 컴퓨터 시스템들, 메인 프레임 컴퓨터 시스템들 및, 상기 시스템들 또는 장치들 중 어느 하나를 포함하는 분산 형 클라우드 컴퓨팅 환경 등을 포함하지만 이에 한정되는 것은 아니다.
[0019] 컴퓨터 시스템/서버(12)는, 컴퓨터 시스템에 의해 실행되는, 프로그램 모듈들과 같은, 컴퓨터 시스템-실행 가능 명령들의 일반적인 관점에서 설명 될 수 있다.  일반적으로, 프로그램 모듈들은 특정 작업들(particular tasks)을 수행하거나 특정 추상 데이터 유형들(particular abstract data types)을 구현하는 루틴들, 프로그램들, 객체들, 구성 요소들, 논리들, 데이터 구조들 등을 포함 할 수 있다. 컴퓨터 시스템/서버(12)는 통신 네트워크를 통해 링크 된 원격 처리 장치들에 의해 작업들이 수행되는 분산형 클라우드 컴퓨팅 환경들을 포함하는 많은 컴퓨팅 환경에서 실시될 수 있지만, 이에 국한되지는 않는다. 분산형 클라우드 컴퓨팅 환경에서, 프로그램 모듈들은 메모리 저장 장치들을 포함하는 로컬 및 원격 컴퓨터 시스템 저장 매체 모두에 위치 할 수 있다.
[0020] 도 1에 도시 된 바와 같이, 컴퓨터 시스템/서버(12)는 범용 컴퓨팅 장치의 형태로 도시되어 있다. 컴퓨터 시스템/서버(12)의 컴포넌트들은 하나 또는 그 이상의 프로세서들 또는 처리 장치들(16), 시스템 메모리(28), 및 시스템 메모리(28)를 포함하는 다양한 시스템 컴포넌트들을 프로세서(16)에 연결시키는 버스(18)를 포함 할 수 있지만, 이에 한정되는 것은 아니다.
[0037] 버스(18)는, 메모리 버스 또는 메모리 제어기, 주변장치 버스(a peripheral bus), 가속 그래픽 포트(an accelerated graphics port), 및 다양한 종류의 버스 아키텍처들 중 어느 하나를 사용하는 프로세서 또는 로컬 버스를 포함하는, 여러 유형의 버스 구조들 중 하나 또는 그 이상을 나타낸다. 예를 들어, 이러한 아키텍처들에는 ISA(Industry Standard Architecture) 버스, MCA(Micro Channel Architecture) 버스, EISA(Enhanced ISA) 버스, VESA(Video Electronics Standards Association) 로컬 버스, 및 PCI(Peripheral Component Interconnect) 버스가 포함되지만, 이에 한정되는 것은 아니다.
[0022] 컴퓨터 시스템/서버(12)는 일반적으로 다양한 컴퓨터 시스템 판독 가능 매체를 포함한다. 이러한 매체는 컴퓨터 시스템/서버(12)에 의해 액세스 가능한 모든 이용 가능한 매체 일 수 있으며, 휘발성(volatile) 및 비 휘발성 매체, 착탈식(removable) 및 비착탈식 매체를 모두 포함한다.
[0023] 시스템 메모리(28)는 RAM(30) 및/또는 캐시 메모리(32)와 같은 휘발성 메모리 형태의 컴퓨터 시스템 판독 가능 매체를 포함 할 수 있다. 컴퓨터 시스템/서버(12)는 다른 착탈식/비착탈식, 휘발성/비휘발성 컴퓨터 시스템 저장 매체를 더 포함할 수 있다. 단지 예시로서, 저장 시스템(34)은 비착탈식, 비휘발성 자기 매체(도시되지 않았고 일반적으로 "하드 드라이브"로 지칭 됨)로부터의 판독 및 이들로의 기록을 위해 제공 될 수 있다. 도시되지는 않았지만, 착탈식, 비휘발성 자기 디스크(예를 들어, "플로피 디스크")로부터의 판독 및 그 자기 디스크에의 기록을 위한 자기 디스크 드라이브, 및, CD-ROM, DVD-ROM 또는 다른 광 매체와 같은, 착탈식, 비휘발성 광 디스크로부터의 판독 또는 그 광 디스크에의 기록을 위한 광 디스크 드라이브가 제공 될 수 있다. 그러한 경우들에서, 각각은 하나 또는 그 이상의 데이터 매체 인터페이스들에 의해 버스(18)에 접속 될 수 있다. 후술하는 바와 같이, 메모리(28)는 본 발명의 실시 예들의 기능들을 수행하도록 구성된 프로그램 모듈들의 세트(예를 들어, 적어도 하나)를 갖는 적어도 하나의 프로그램 제품을 포함 할 수 있다.
[0024] 프로그램 모듈들(42)의 세트(적어도 하나)를 갖는 프로그램/유틸리티 (40)는 메모리(28)에 저장될 수 있으며, 이 들의 예에는 운영 체제뿐만 아니라, 하나 또는 그 이상의 애플리케이션 프로그램들, 다른 프로그램 모듈들, 및 프로그램 데이터가 포함되나, 이에 한정되지는 않는다. 운영 체제, 하나 또는 그 이상의 애플리케이션 프로그램들, 다른 프로그램 모듈들, 및 프로그램 데이터 또는 이들의 조합의 각각은 네트워킹 환경의 구현을 포함 할 수 있다. 프로그램 모듈들(42)은 일반적으로 본 명세서에서 설명 된 바와 같은 본 발명의 실시 예들의 기능들 및/또는 방법들을 수행한다.
[0025] 컴퓨터 시스템/서버(12)는 또한, 키보드, 포인팅 장치, 디스플레이(24) 등과 같은, 하나 또는 그 이상의 외부 장치들(14)과 통신 할 수 있다. 이들 외부 장치들(14)에는 사용자가 컴퓨터 시스템/서버(12)와 상호 작용할 수 있게 하는 하나 또는 그 이상의 장치들; 및/또는 컴퓨터 시스템/서버(12)가 하나 또는 그 이상의 다른 컴퓨팅 장치와 통신 할 수 있게 하는 모든 장치들(예를 들어, 네트워크 카드, 모뎀 등)이 포함될 수 있다. 통신은 입력/출력(I/O) 인터페이스들(22)을 통해서 일어난다. 또한, 컴퓨터 시스템/서버(12)는 네트워크 어댑터(20)를 통해서 근거리 통신망(LAN), 일반 광역 통신망(WAN) 및/또는 공중 네트워크(예를 들어, 인터넷)과 같은 하나 또는 그 이상의 네트워크들과 통신 할 수 있다. 도시 된 바와 같이, 네트워크 어댑터(20)는 버스(18)를 통해 컴퓨터 시스템/서버(12)의 다른 구성 요소들과 통신한다. 도시되지는 않았지만, 다른 하드웨어 및/또는 소프트웨어 컴포넨트들이 컴퓨터 시스템/서버(12)와 함께 사용될 수 있음을 이해하여야 한다. 이들의 예에는 마이크로 코드, 장치 드라이버들, 리던던트 처리 장치들, 외장형 디스크 드라이브 어레이들, RAID 시스템들, 테이프 드라이브들 및 데이터 아카이브 저장 시스템들이 포함되지만 이에 한정되지는 않는다.
[0026] 예를 들어, 처리 장치(16)는 명령들을 실행하는데 사용되는 복수의 기능 컴포넌트들을 포함할 수 있다. 이들 기능 컴포넌트들은, 예를 들어, 실행될 명령들을 페치 하기 위한 명령 페치 컴포넌트; 페치 된 명령들을 디코드 하기 위한 명령 디코드 장치; 디코된 명령들을 실행하기 위한 명령실행 컴포넌트들; 필요한 경우, 명령 실행을 위해 메모리에 액세스하는 메모리 액세스 컴포넌트; 및 실행 된 명령들의 결과들을 제공하기 위한 라이트 백 컴포넌트를 포함한다. 이들 컴포넌트들 중 하나 또는 그 이상은, 본 발명의 일 실시 예에 따라, 제한된 것으로 식별된 저장소 오퍼랜드 요청의 처리를 금지하는 단계 또는 지연하는 단계를 구현하기 위해 사용될 수 있고, 이에 관해서는 이하에서 더 설명한다.
[0027] 처리 장치(16)는 또한, 일 실시 예에서, 하나 또는 그 이상의 기능 컴포넌트들에 의해 사용될 하나 또는 그 이상의 레지스터들을 포함한다.
[0028] 본 발명의 하나 또는 그 이상의 실시 예들을 구현하고 사용하는 컴퓨팅 환경의 다른 실시 예가 도 2를 참조하여 설명된다. 일 예에서, 컴퓨팅 환경은 미국 뉴욕 주 아몽크에 있는 인터내셔널 비즈니스 머신즈 코포레이션이 공급하는 전술한 z/Architecture 에 기초할 수 있다. 다른 예에서, 컴퓨팅 환경은 미국 뉴욕 주 아몽크에 있는 인터내셔널 비즈니스 머신즈 코포레이션이 공급하는 전술한 Power Architecture 에 기초할 수 있다. 컴퓨팅 환경은, 또한, Intel 64 및 IA-32를 포함하지만, 이에 한정하지 않는, 다른 아키텍처들에 기초할 수 있다. 기타 예들도 또한 존재한다. 
[0029] 도 2를 참조하면, 일 예에서, 컴퓨팅 환경(200)은 하나 또는 그 이상의 상위 수준 캐시들(205)에 연결된, 중앙 처리 장치(central processing unit: CPU)와 같은, 적어도 하나의 처리 장치 (PU)을 포함한다. 중앙 처리 장치(16)는, 예를 들어, 데이터를 요청하고 소비하기 위한 하나 또는 그 이상의 실행 장치들(201)을 포함한다. 실행 장치들(201)은, 로드/저장 큐(LSQ)(203)를 포함하는, 로드/저장 장치(LSU) (202)에 결합 된다. 로드/저장 장치(202)는, 프리페치 된 데이터를 검색하는 또는 데이터가 메모리 서브 시스템 혹은 상위 수준 캐시들로부터 페치 되도록 하는, 메모리 액세스 연산들(로드들 및 저장들)을 발행한다. LSU(202)는, 예를 들어, 변환 룩어 사이드 버퍼(a translation look-aside buffer: TLB) 또는 실제 주소 유효 변환 테이블(an effective-to-real address translation table: ERAT)과 같은, 변환 메카니즘을 통해 로컬 캐시(204)에 결합될 수 있다.
[0030] 처리 장치(16)는 메모리 계층 구조(a memory hierarchy)에 연결되고 메모리 계층 구조와 통신한다. 메모리 계층 구조는, 예를 들어, L1 데이터 캐시를 포함 할 수 있는, 로컬 캐시(들) (204); 단일 수준의 두 (L2) 캐시 또는 다수의 다른 순차적으로 번호 매겨진 상위 수준들, 예를 들어, L3, L4를 포함 할 수 있는 하나 또는 그 이상의 상위 수준 캐시들(205); 메모리 (215); 및 메모리 (215)에 대한 액세스를 제어하는 관련 메모리 제어기(210)를 포함한다. 로컬 캐시(들)(204)는 프리 페치 되는 데이터(및/또는 데이터 스트림들)에 대한 프리 페치 버퍼로서의 역할을 한다. 로컬 캐시(들)(204)는 대응 로드 미스 큐 (LMQ)를 가지며, 이는 캐시가 진행 중인 프리 페치 요청들에 관한 정보를 저장하기 위해 이용한다.
[0031] 또한, 일 실시 예에서, 로컬 캐시(들)(204)는 연관된 캐시 디렉토리를 가질 수 있고, 이는, 캐시의 일부로서 구현되거나 그로부터 분리되어 유지 될 수 있다. 상기 캐시 디렉토리는 로컬 캐시의 각 캐시 라인에 대해 태그를 포함 할 수 있다. 상기 태그는 캐시 라인에 관한 정보를 제공하는데, 이 정보는, 데이터가 배타적으로 또는 공유로 홀드 되고 있는 지와 같은, 상태 정보; 데이터가 가장 최근에 사용되었는지, 가장 최근에 사용되지 않았는지, 또는 그 중간 어디에 있는 지와 같은, 데이터의 사용 정보; 및/또는 기타 상태 정보뿐만 아니라, 캐시 라인의 데이터의 실제 또는 절대 주소의 적어도 일부를 포함 할 수 있다. 상기 태그는 또한 캐시 라인의 데이터에 관한 추가 정보 를 포함 할 수 있다. 각 캐시 수준은, 자체 캐시 디렉토리 또는 공유 디렉토리 어느 쪽이던지, 관련 캐시 디렉토리를 가질 수 있다.
[0032] 예시적인 메모리 계층 구조에 추가하여, 컴퓨팅 환경(200)은 또한 처리 장치(16)의 관점에서 메모리 계층 구조의 일부를 형성하는 추가 저장 장치들을 포함 할 수도 있다. 상기 저장 장치들은, 플로피 디스크, 하드 드라이브, CD-ROM 또는 DVD와 같은, 하나 또는 그 이상의 전자 저장 매체 일 수 있다. CPU (102)는, 예를 들어, 비아 버스들 및/또는 직접 채널들을 포함하는, 다양한 메커니즘들에 의해 메모리 계층 구조 내의 상기 장치들 각각과 통신한다.
[0033] 상기 버스들은 여러 유형의 버스 구조들 중 하나 또는 그 이상을 나타낼 수 있으며, 상기 여러 유형의 버스 구조들은 메모리 버스 또는 메모리 컨트롤러, 주변 장치 버스, 가속 그래픽 포트, 및 다양한 버스 아키텍처 중 임의의 것을 사용하는 프로세서 또는 로컬 버스를 포함할 수 있다. 예를 들어, 그러한 아키텍처들은 ISA(Industry Standard Architecture) 버스, VESA(Video Electronics Standards Association) 로컬 버스, 및 PCI(Peripheral Component Interconnect) 버스를 포함하지만, 이에 국한되지는 않는다.
[0034] 추가 실시 예에서, 본 명세서에 개시된 처리는, 도 3을 참조하여 이하에서 설명되는 것과 같은, 다수 프로세서 환경에서 사용될 수 있다. 일 예에서, 다수 프로세서 환경(300)은 복수의 코어들(302a … 302n)을 포함한다. 각각의 코어는L1 캐시 (306a, 306n)와 같은, 로컬 캐시를 포함하는 적어도 하나의 하드웨어 스레드 또는 처리 장치(304a, 304n)를 포함한다. 각각의 코어(302a, 302n)는 0 또는 그 이상의 상위 수준 전용 캐시(들)(예를 들어, L2 캐시(들))에 결합된다. 또한, 다수 프로세서 환경 (300)은, 코어들 간에 공유되는, 더 구체적으로는 처리 장치들 사이에서 공유되는, L3 및/또는 L4 캐시와 같은, 0또는 그 이상의 공유 캐시들(310)을 포함한다. 다른 토폴로지들도 또한 존재할 수도 있다.
[0035] 다수 프로세서 환경의 각 처리 장치 (또는 처리 장치들의 서브세트)는 또한 캐시 잔류 상태(cache residency status) 및/또는 선택된 데이터의 다른 정보를 획득하기 위해, 이용 가능하다면, 하나 또는 그 이상의 공유 캐시(들)를 포함하는, 하나 또는 그 이상의 캐시들을 질의하는데 사용되는 질의 함수(a query function)를 포함 할 수 있다.
[0036] 전술 한 바와 같이, 본 발명의 하나 또는 이상의 실시 예들에 따라, 컴퓨팅 환경 내에서 처리를 향상시키기 위한 퍼실리티가 본 명세서에서 제공된다. 도 4에 도시 된 바와 같이, 상기 퍼실리티는 컴퓨팅 환경의 다수의 처리 장치들에 의해 공유되는 공동의 저장소 위치에 대한 저장소 오퍼랜드 요청이 제한되었는지를 결정하는 기능을 포함 할 수 있다(400). 상기 오퍼랜드 요청이 제한되었다고 결정하는 것에 기초하여, 상기 저장소 오퍼랜드는 일시적으로 금지될 수 있다. 즉, 상기 저장소 오퍼랜드 요청에 따른 상기 공동의 저장소 위치에 대한 하나 또는 그 이상의 액세스 질의들이 연기될 수 있다(410)
[0037] 본 발명의 하나 또는 그 이상의 구현들에서, 저장소 오퍼랜드 요청을 금지하는 단계는 상기 저장소 오퍼랜드 요청과 연관된, 명령, 또는 명령의 연산이 완료될(next to complete) 때까지 상기 저장소 오퍼랜드 요청의 처리를 금지하는 단계를 포함할 수 있다. 상기 금지하는 단계는 저장소 오퍼랜드 요청을 처리하기 위해 컴퓨팅 환경의 다수 처리 장치들에 의해서 공유된 공동의 저장소에 대한 액세스를 상기 저장소 오퍼랜드 요청이 요구하는 경우에 일어날 수 있다. 또한 상기 처리를 구현하는 처리 장치는 상기 저장소 오퍼랜드 요청이 상기 처리 장치의 전용 캐시(a private cache)를 히트(hit)하는 지를 더 결정할 수 있으며, 상기 저장소 오퍼랜드 요청이 상기 전용 캐시에서 히트를 하는 것에 기초하여, 상기 금지하는 단계를 수행함이 없이, 상기 저장소 오퍼랜드 요청의 처리를 계속할 수 있다.
[0038] 본 발명의 하나 또는 그 이상의 구현들에서, 상기 컴퓨팅 환경의 다수 처리 장치들에 의해서 공유된 공동 저장소 위치에 대한 액세스를 요구하는 상기 저장소 오퍼랜드 요청은 저장소 오퍼랜드 요청들의 큐(queue)에 배치될 수 있다. 예로서, 상기 일시적으로 금지하는 단계는 상기 저장소 오퍼랜드 요청과 연관된, 명령, 또는 명령의 연산이 완료될(next to complete) 때까지 저장소 오퍼랜드 요청들의 큐에, 예를 들어, 로드 저장 장치(a load storage unit)에, 상기 저장소 오퍼랜드 요청을 유지하는 단계(retaining)를 포함할 수 있다.
[0039] 또한, 상기 퍼실리티는 상기 저장소 오퍼랜드 요청이 제한되었음을 식별하기 위한 기능을 포함할 수 있다. 상기 식별하는 단계는 다음 순차 명령의 오퍼랜드와 연관된 액세스 의도를 표시하는 액세스 의도 명령을, 처리 장치에 의해서, 획득하는 단계를 포함할 수 있다. 상기 액세스 의도는 상기 저장소 오퍼랜드 요청의 사용이 제한되었음을 표시할 수 있다. 본 발명의 하나 또는 그 이상의 구현들에서, 상기 액세스 의도 명령은 다음 명령 액세스 의도 명령일 수 있고, 상기 저장소 오퍼랜드 요청이 제한되었음을 식별하는 단계는 상기 다음 명령 액세스 의도 명령 내에 제한 액세스 의도 코드(a restrain access intent code)를 제공하는 단계를 포함할 수 있으며, 이하에서 더 설명한다,
[0040] 본 발명의 하나 또는 그 이상의 실시 예들에서, 상기 저장소 오퍼랜드 요청은 명령 또는 명령의 연산과 연관된 추측 저장소 오퍼랜드 요청(a speculative storage operand request)이며, 여기서 명령은, 명령 세트 아키텍처에서와 같은, 아키텍트 명령을 지칭할 수 있으며, 명령의 연산은 크랙될(cracked) 수 있는 아키텍트된 명령의 컴포넨트와 같은, 마이크로-연산을 지칭할 수 있다.
[0041] 도 5는 본 발명의 하나 또는 그 이상의 실시 예들에 따른 프로세스 흐름의 더 상세한 실시 예를 묘사한다. 도시한 바와 같이, 처리 장치는 명령을 패치하고(500), 예를 들어, 오퍼랜드 관련 신호들, 실행 장치(LSU, FXU 등), "제한됨" 지정, 등을 결정하기 위해 상기 명령을 디코드 할 수 있다(505). 전술한 바와 같이, 상기 제한됨 지정을 제공하는 기능은 명령 세트 아키텍처(ISA)에서 구현될 수 있고, 이에 관해서는 도6a-7을 참조하여 아래에서 설명된다.
[0042] 상기 명령은 실행을 위해 큐 되고(queued)(510), 상기 처리 장치는 상기 명령이 발행될 준비가 되었는지를 결정한다(515).  만일 "아니오"라면, 상기 명령은 큐에 남아 있는다(510). 그렇지 않으면, 상기 명령은 실행 장치로 발행된다. 이 예에서, 상기 명령은 저장소 오퍼랜드 요청 또는 액세스를 포함하는 것으로 가정되고, 로드 저장 장치(LSU)(501)로 발행된다.   
[0043] 제공된 예에서, LSU(501)는 상기 저장소 오퍼랜드 어드레스를 결정하고(530), 하나 또는 그 이상의 로컬 또는 전용 캐시들로부터 상기 처리 장치로 상기 저장소 오퍼랜드 액세스를 요청한다(535). 상기 처리 장치는 상기 요청이 상기 로컬 캐시(들)를 히트 또는 미스하는지를 결정한다(540). 만일 캐시 히트가 있다면, 상기 처리 장치는 표준 명령 처리를 계속한다. 그러나, 만일 캐시 미스가 있다면, 상기 명령은 상기 큐로 반환되고(510), 상기 명령과 연관된 저장소 오퍼랜드 요청은 가능한 추측 수행을 위해 저장소 오퍼랜드 요청들의 큐에 배치된다.
[0044] 도시된 구현에서, LSU(501)는 저장소 오퍼랜드 요청들의 큐(545) 내의 다음 저장소 오퍼랜드 요청이 제한됨으로 지정되었는지를 결정한다(550). 만일"아니오"라면, 상기 처리 장치는 상기 처리 장치로부터 외부의 상기 저장소 계층 구조에 대한 액세스를 요청한다. 다시 말하면, 컴퓨팅 환경의 다수의 처리 장치들에 의해서 공유된 공동의 저장소 위치에 대한 액세스를 요청한다. 만일 상기 저장소 오퍼랜드 요청이 제한된 것으로 지정되었다면, 상기 처리 장치는, 상기 요청과 연관된, 상기 명령 또는 상기 명령의 연산이 완료될 것인지(NTC)를 결정한다(555). 만일 상기 대응 명령이 실행을 위한 명령들의 큐에서 완료될 것(NTC)이라면, 상기 처리 장치는 액세스 질의를 상기 처리 장치의 외부 저장소 계층 구조로 전송한다. 그렇지 않으면, 상기 저장소 오퍼랜드 요청을 일시적으로 금지하기 위해 상기 저장소 오퍼랜드 요청은 상기 저장소 오퍼랜드 요청들의 큐(545)로 반환된다. 상기 금지하는 단계는 상기 요청과 연관된 명령(또는 연산)이 완료될 때까지 계속되고, 완료될 때, 상기 요청은 원하는 공동 저장소 위치에 대한 액세스를 위해 상기 처리 장치 외부의 상기 저장소 계층 구조로 질의를 보낸다.
[0045] 본 발명의 하나 또는 그 이상의 실시 예들에 따라 사용될 수 있는 명령 포맷의 일 실시 예가 도 6a, 도 6b 및 도 7을참조하여 설명된다.  도 6a에서, 다음 명령 액세스 의도 (Next Instruction Access Intent: NIAI) 명령으로 알려진 명령 포맷이 도시되어있다. 이 명령 포맷은 이것이 다음 명령 액세스 의도 명령임을 표시하는 연산 코드 필드 (601)를 포함 할 수 있다. 또한, 본 발명의 하나 또는 그 이상의 실시 예들에서 0들을 포함 할 수 있는 유보 필드 (602)가 제공 될 수 있다. 상기 명령 포맷은 또한, 액세스 의도 제어 필드 (603) (I1), 및 다른 액세스 의도 제어 필드(604) (I2)와 같은, 필드들 또는 오퍼랜드들을 포함 할 수 있다.
[0046] 이 명령 포맷에서, 용어 1차-액세스 오퍼랜드(the term primary-access operand)는 명령의 가장 낮은 번호가 매겨진 저장소 오퍼랜드(the lowest numbered storage operand of an instruction)를 의미한다. 유사하게, 용어2 차 액세스 오퍼랜드(the term secondary-access operand )는 상기 명령의 다음으로 낮은 번호의 저장소 오퍼랜드를 의미한다. 이들 용어들은, 비록 일부 상관관계가 있을 수 있지만, 제1오퍼랜드 및 제2 오퍼랜드라는 용어들(the terms first operand and second operand)과 동일한 의미를 갖지는 않는다.
[0047] I1(603) 및 I2 (604) 필드들의 제어들에 의해서, CPU는 다음 순차 명령의 1 차 액세스 및 2 차 액세스 오퍼랜드들 중 하나 또는 모두에 대한 장래의 액세스 의도에 대하여 신호를 받는다. 상기 다음 순차 명령은 NIAI 명령 다음에 검색되어 실행되는 명령 일 수 있다. I1 (603) 필드는 CPU에게 상기 다음 순차 명령의 1차-액세스 오퍼랜드에 대한 액세스 의도를 CPU에 신호하는 코드를 포함 할 수 있다. I2 (604)필드는 상기 다음 순차 명령의 2차-액세스 오퍼랜드에 대한 액세스 의도를 CPU에 신호하는 코드를 포함 할 수 있다. 상기 다음 순차 명령이 오직 단일의 저장소 오퍼랜드만을 가질 때는, I2(604) 필드는 무시 될 수 있다.
[0048] 명령 포맷의 일 실시 예는 단일의 액세스 의도 필드를 포함 할 수 있다. 명령 포맷의 다른 실시 예는 2 개의 액세스 의도 필드들을 포함 할 수 있다. 명령 포맷의 다른 실시 예는 다수의 액세스 의도 필드들을 포함 할 수 있다. 명령 포맷의 또 다른 실시 예는 후속 다음 순차 명령들의 수를 명시하는 값을 포함하는 필드 또는 오퍼랜드를 포함 할 수 있다. 액세스 의도 제어 필드들 I1(603) 및 I2(604)는도 6b에 도시 된 바와 같은 포맷(610)을 가질 수 있다. 여기서, I1(603) 및 I2(604)의 비트들의 세트 수(a set number of bits )는 부호 없는 정수를 포함하고, 이는 상기 다음 순차 명령의 대응 오퍼랜드에 대한 액세스 의도를 CPU에 신호하기 위한 코드로 사용된다.
[0049] 본 발명의 하나 또는 그 이상의 실시 예들에 따라, 만일 상기 액세스 의도 제어 필드들이 "제한된"값, 예를 들어, 값 4를 포함한다면, 상기 다음 순차 명령의 대응 오퍼랜드 참조는 다수 처리 환경에서 공동 저장 영역에 대한 것이다. 만일 상기 오퍼랜드의 처리가 CPU의 로컬(또는 전용) 캐시 수준들만을 사용하여 달성될 수 없다면, CPU가 상기 다음 순차 명령 이전의 모든 명령들이 처리를 완료한 후가 될 때까지 외부 저장소 계층 구조에 대한 모든 질의들을 연기하는 것이 추천된다. 바람직하게는, 상기 다음 명령 액세스 의도 명령을 위한 제한된 액세스 의도 값은 구성 전체를 통해 크게 충돌되는(highly contested) 저장소 위치들에 대한 추측 요청들을 회피하기 위해 사용될 수 있으며, 이에 따라 저장소 서브 시스템에서의 불필요한 연산들을 감소시킨다.
[0050] CPU의 모델에 따라서, CPU가 오퍼랜드에 대한 모든 액세스 의도들을 반드시 인지할 수 있는 것은 아니다. CPU에 의해서 인지되지 못하는 액세스 의도들에 대해, 상기 명령은 연산을 하지 않을 수 있다. 아무런 연산을 하지 않는다는 것은 명령이 실제로 연산을 수행하지 않을 때이다. 또한, 상기 다음 명령 액세스 의도 명령은 오직 후속 명령들 오퍼랜드 액세스들에만 영향을 미칠 수 있지만, 예를 들어, 후속 명령 페치들에는 영향을 미치지 않을 수 있다. 
[0051] 하나 또는 그 이상의 실시 예들에서, 프로그램은 하나 또는 그 이상의 캐시 라인 경계들을 가로지를 수 있는 대응 저장소 오퍼랜드들과 함께 상기 액세스 의도 값을 사용할 수도 또는 사용하지 않을 수도 있다고 예상된다.  
[0052] 또한, 만일 다음 명령 액세스 의도의 실행 후 및 다음 순차 명령의 실행 전에 인터럽트가 발생한다면, 상기 다음 명령 액세스 의도는 아무런 연산을 하지 않을 수 있고, 상기 명시된 액세스 의도는 무시된다.
[0053] 하나 또는 그 이상의 구현들에서, 제한된 액세스 의도 값은, I1 필드에 의해서 명시된 바와 같이, 1차-액세스 오퍼랜드와 함께 사용될 수 있다.
[0054] 본 발명의 일 실시 예에 따른 흐름도의 일 실시 예가 도 7을 참조하여 설명된다. 도시 된 바와 같이, 하나 또는 그 이상의 구현들에서, CPU는 액세스 의도를 표시하는 액세스 의도 명령을 획득한다(700). 상기 액세스 의도는 다음 순차 명령의 오퍼랜드와 연관될 수 있다. 상기 액세스 의도는 또한 상기 다음 순차 명령에 후속하는 명령(들)에 의한 오퍼랜드의 사용을 표시할 수 있다. 그 다음, CPU는 상기 액세스 의도 명령을 실행한다(710). 일 실시 예에서, 처리 장치는, 예를 들어, 내부 메모리 또는 내부 제어 레지스터에 액세스 의도를 내부적으로 저장함으로써 상기 액세스 의도를 기억할 수 있다. CPU는 다음 순차 명령을 획득한다(720). 상기 다음 순차 명령이 실행되고, 상기 실행의 일부로서, 처리 장치 동작이 상기 액세스 의도 명령의 액세스 의도에 기초하여 제어된다(730).
[0055] 본 발명의 일 실시 예에서, 저장소 오퍼랜드 요청의 처리를 선택적으로 중지시키기 위해 제어된 처리 장치의 동작이 이하에서 설명된다. 여기서, 상기 저장소 오퍼랜드 요청은, 예를 들어, 액세스 의도 명령을 사용하는 프로그램에 의해서 제한되는 것이 결정되거나 또는 식별된다. 저장소 오퍼랜드 요청을 제한된 것으로 식별하는 것은, 상기 액세스 의도 명령의 하나 또는 그 이상의 제어 필드들에서 지정된 액세스 의도 코드를 이용하는, 하나 또는 그 이상의 구현들에서, 전술한 바와 같이, 달성 될 수 있다.       
[0056] 더욱 상세하게는, 전술한 액세스 의도 값을 명시함으로써, 심볼릭 어드레스 CNTR(예를 들어, 구성에서 다수의 CPU들 사이에 공유되는 카운터에 대한 저장소 위치인)을 위한 CPU 로컬 캐시 수준들의 외부 저장소 계층구조에 대한 추측 질의들이 제공될 수 있다. 만일 상기 CPU 로컬 캐시 수준들의 외부 저장소 계층구조에 대한 질의가 CNTR을 처리하기 위해 요구된다면, 상기 질의는 상기 요청과 연관된, 명령 또는 명령의 연산 이전의 명령들이 처리를 완료할 때까지 연기된다. 상기 CNTR에 대한 다수 CPU들 사이의 질의들의 수가 최소화될 때, CNTR을 갱신하기 위해 각 CPU에 의해서 요구되는 시간도 또한 최소화된다.   
[0057] 도 8a-8b를 참조하면, 본 발명의 하나 또는 그 이상의 실시 예들에 따라, 컴퓨팅 환경 내의 처리를 용이하게하는 단계(800)는: 컴퓨팅 환경의 다수 처리 장치들에 의해서 공유되는 공동 저장소 위치에 대한 저장소 오퍼랜드 요청이 제한되었는지(restrained)를 결정하는 단계(determining); 및 상기 저장소 오퍼랜드 요청이 제한되었다고 결정하는 것에 기초하여, 상기 저장소 오퍼랜드 요청에 따른 상기 공동의 저장소 위치에 대한 액세스를 요청하는 것을 일시적으로 금지하는 단계 (temporarily suppressing)를 포함한다.
[0058] 상기 일시적으로 금지하는 단계는 상기 저장소 오퍼랜드 요청을 처리하기 위하여 컴퓨팅 환경의 다수 처리 장치들에 의해서 공유된 공동의 저장소 위치에 대한 액세스를 요구하는 상기 저장소 오퍼랜드 요청의 처리를 금지하는 단계를 포함할 수 있다(805). 또한, 상기 처리가 처리 장치에 의해서 수행되는 경우, 상기 처리 장치는 상기 저장소 오퍼랜드 요청이 상기 처리 장치의 전용 캐시(a private cache)를 히트(hit)하는 지를 더 결정할 수 있고, 상기 저장소 오퍼랜드 요청이 상기 전용 캐시에서 히트하는 것에 기초하여, 상기 금지하는 단계를 수행함이 없이, 상기 저장소 오퍼랜드 요청의 처리를 계속할 수 있다(810).
[0059] 또한, 상기 금지하는 단계는 상기 저장소 오퍼랜드 요청과 연관된, 명령, 또는 명령의 연산이 완료될(next to complete) 때까지 상기 저장소 오퍼랜드 요청의 처리를 금지하는 단계를 포함할 수 있다(815). 이 것은, 예를 들어, 컴퓨팅 환경의 다수 처리 장치들에 의해서 공유된 공동 저장소 위치에 대한 액세스를 요구하는 상기 저장소 오퍼랜드 요청을 저장소 오퍼랜드 요청들의 큐(queue)에 배치하는 단계(placing)를 포함할 수 있다(820). 예로서, 상기 일시적으로 금지하는 단계는 상기 저장소 오퍼랜드 요청과 연관된, 명령, 또는 명령의 연산이 완료될(next to complete) 때까지 저장소 오퍼랜드 요청들의 큐(queue)에 상기 저장소 오퍼랜드 요청을 유지하는 단계(retaining)를 포함할 수 있다(825).
[0060] 본발명의 하나 또는 그 이상의 구현들에서, 처리를 용이하게 하는 단계는 상기 저장소 오퍼랜드 요청이 제한되었음을 식별하는 단계를 더 포함할 수 있다(830). 상기 식별하는 단계는 다음 순차 명령의 오퍼랜드와 연관된 액세스 의도를 표시하는 액세스 의도 명령을, 처리 장치에 의해서, 획득하는 단계를 포함할 수 있다. 상기 액세스 의도 표시는 상기 저장소 오퍼랜드 요청의 사용이 제한되었음을 표시할 수 있다(830). 예를 들어, 상기 액세스 의도 명령은 다음 명령 액세스 의도 명령일 수 있고, 상기 저장소 오퍼랜드 요청이 제한되었음을 식별하는 단계는 상기 다음 명령 액세스 의도 명령 내에 제한된 액세스 의도 코드(a restrained access intent code)를 제공하는 단계를 포함할 수 있다.
[0061] 본발명의 하나 또는 그 이상의 구현들에서, 상기 저장소 오퍼랜드 요청은 명령 또는 명령의 연산과 연관된 추측 저장소 오퍼랜드 요청(a speculative storage operand request)일 수 있다(840).
[0062] 본 발명의 하나 또는 그 이상의 실시 예들을 구현하고 사용하는 컴퓨팅 환경의 다른 실시 예가 도 9a를 참조하여 설명된다. 이 예에서, 컴퓨팅 환경(900)은, 예컨대, 네이티브 중앙 처리 장치(CPU)(902), 메모리(904), 및, 예를 들어, 하나 또는 그 이상의 버스들(908) 및/또는 다른 접속들을 통해, 서로 연결된 하나 또는 그 이상의 입출력 장치들 및/또는 인터페이스들(906)을 포함한다. 예로서, 컴퓨팅 환경(900)은 미국 뉴욕 주 아몽크에 있는 인터내셔널 비즈니스 머신즈 코포레이션이 공급하는 PowerPC 프로세서 또는 pSeries 서버를 포함 할 수 있으며; 미국 캘리포니아 주 팔로 알토에 있는 Hewlett Packard Co.가 공급하는 Intel Itanium II 프로세서들이 장착 된 HP Superdome; 및/또는 인터내셔널 비즈니스 머신즈 코포레이션, Hewlett Packard, Intel, Oracle 또는 기타 회사들이 공급하는 아키텍처들에 기초하는 기타 머신들을 포함할 수 있다. 
[0063] 네이티브 중앙 처리 장치(902)는, 환경 내에서 처리 중에 사용되는 하나 또는 그 이상의 일반 레지스터들 및/또는 하나 또는 그 이상의 특수 목적 레지스터들과 같은 하나 또는 그 이상의 네이티브 레지스터들(910)을 포함한다. 이들 레지스터들은 특정 시점에서 환경 상태를 나타내는 정보를 포함한다.
[0064] 더 나아가서, 네이티브 중앙 처리 장치(902)는 메모리(904)에 저장된 명령들 및 코드를 실행한다. 하나의 특정 예에서, 상기 중앙 처리 장치는 메모리 (904)에 저장된 에뮬레이터 코드(912)를 실행한다. 이 코드는 한 아키텍처에서 구성된 컴퓨팅 환경이 다른 아키텍처를 에뮬레이트 할 수 있게 해 준다. 예를 들어, 에뮬레이터 코드(912)는 z/아키텍처가 아닌 아키텍처들에 기초한 머신들, 예를 들어 PowerPC 프로세서들, pSeries 서버들, HP Superdome 서버들, 또는 다른 서버들이 z/아키텍처를 에뮬레이트 하여 z/아키텍처에 기초하여 개발된 소프트웨어 및 명령들을 실행할 수 있게 해 준다.
[0065] 에뮬레이터 코드(912)에 관한 더 상세한 설명은 도 9b를 참조하여 기술된다. 도 9a-9b를 함께 참조하면, 메모리(904)에 저장된 게스트 명령들(950)은 네이티브 CPU(902)의 아키텍쳐가 아닌 아키텍쳐에서 실행되도록 개발 된 소프트웨어 명령들(예를 들어, 머신 명령들에 관련되는)을 포함한다. 예를 들어, 게스트 명령들(950)은 z/아키텍처 프로세서 상에서 실행하도록 설계되었지만, 예를 들어 Intel Itanium II 프로세서인, 네이티브 CPU(902)상에서 에뮬레이트 될 수 있다. 한 예에서, 에뮬레이터 코드(912)는 메모리(904)로부터 하나 또는 그 이상의 게스트 명령들 (950)을 획득하고 획득 된 명령들에 대한 로컬 버퍼링을 선택적으로 제공하기 위한 명령 페치 루틴(952)을 포함한다. 또한, 획득 된 게스트 명령의 유형을 결정하고 상기 게스트 명령을 하나 또는 그 이상의 대응하는 네이티브 명령들 (956)로 변환하기 위한 명령 변환 루틴(954)을 포함한다. 이 변환은, 예를 들어, 상기 게스트 명령에 의해 수행 될 기능을 식별하는 것과 그 기능을 수행하기 위한 네이티브 명령(들)을 선택하는 것을 포함한다.
[0066] 또한, 에뮬레이터 코드(912)는 네이티브 명령들이 실행되도록 하는 에뮬레이션 제어 루틴(960)을 포함한다. 에뮬레이션 제어 루틴(960)은 네이티브 CPU(902)로 하여금 하나 또는 그 이상의 이전에 획득 된 게스트 명령들을 에뮬레이트하는 네이티브 명령들의 루틴을 실행하게 하고, 그러한 실행의 종료 시에, 다음 게스트 명령 또는 일 군의 게스트 명령들을 획득하는 것을 에뮬레이트 하기 위해 상기 명령 페치 루틴에 제어를 반환(return)하게 할 수 있다. 네이티브 명령들(956)의 실행은 메모리(904)로부터 레지스터로 데이터를 로드하는 단계(loading); 레지스터로부터 데이터를 메모리에 다시 저장하는 단계(storing); 또는 변환 루틴에 의해 결정되는 어떤 유형의 산술 또는 논리 연산을 수행하는 단계(performing)를 포함 할 수 있다.
[0067] 각 루틴은, 예를 들어, 소프트웨어로 구현되고, 상기 소프트웨어는 메모리에 저장되며, 네이티브 중앙 처리 장치(902)에 의해 실행된다. 다른 예에서, 하나 또는 그 이상의 루틴들 또는 연산들은 펌웨어, 하드웨어, 소프트웨어 또는 이들의 조합으로 구현된다. 에뮬레이트된 프로세서의 레지스터들은 상기 네이티브 CPU의 레지스터들(910)을 사용하여 또는 메모리(904) 내의 위치들을 사용하여 에뮬레이트 될 수 있다. 실시 예들에서, 게스트 명령들(950), 네이티브 명령들(956) 및 에뮬레이터 코드(912)는 동일한 메모리 내에 상주 하거나 또는 다른 메모리들 사이에서 분산 될 수 있다.
[0068] 본 명세서에서 사용 된 바와 같이, 펌웨어는, 예를 들어, 프로세서의 마이크로 코드, 밀리 코드 및/또는 매크로 코드를 포함한다. 펌웨어는, 예를 들어, 하드웨어 수준 명령들(the hardware-level instructions) 및/또는 상위 수준 머신 코드의 구현에 사용 되는 데이터 구조(data structures used in implementation of higher level machine code)를 포함한다. 일 실시 예에서, 펌웨어는, 예를 들어, 소유권 있는 코드(proprietary code)를 포함하며, 이 소유권 있는 코드는 통상적으로 마이크로 코드로 전달되며, 하부의 하드웨어(the underlying hardware)에 특정된 신뢰 소프트웨어 또는 마이크로 코드를 포함하고 시스템 하드웨어에 대한 운영 체제 액세스를 제어한다.
[0069] 획득되고, 변환되고 실행되는 게스트 명령(950)은, 예를 들어, 본 명세서에서 기술한 하나 또는 그 이상의 명령들이다. 상기 명령은, 하나의 아키텍처(예: z/Architecture)를 가지고 있고, 메모리에서 페치되어, 다른 아키텍처 (예: PowerPC, pSeries, Intel 등)의 네이티브 명령들(956)의 시퀀스로 변환되어 표현된다. 그런 다음 이들 네이티브 명령들은 실행된다.
[0070] 다양한 실시 예들이 제공되었지만, 청구 범위의 정신을 벗어남이 없이 다양한 변형들이 가능하다. 예를 들어, 상기 명령에 의해서 사용되는 레지스터들 및/또는 필드들에 포함되는 값들은, 다른 실시 예들에서는, 다른 위치들, 예를 들어, 메모리 위치들에 포함될 수 있다. 많은 다른 변형들도 능하다.
[0071] 본 발명의 하나 또는 그 이상의 실시 예들은 클라우드 컴퓨팅과 관련될 수 있다.
[0072] 본 명세서에서 클라우드 컴퓨팅에 관해서 상세한 설명들을 포함하지만, 그러한 설명들의 구현은 클라우드 컴퓨팅 환경에만 한정되는 것은 아님을 이해 하여야 한다. 오히려, 본 발명의 실시 예들은 지금 알려져 있거나 또는 나중에 개발될 모든 다른 유형의 컴퓨팅 환경과 함께 구현될 수 있다.
[0073] 클라우드 컴퓨팅은, 최소한의 관리 노력 또는 서비스 제공자와의 상호작용으로 빠르게 제공되고 릴리스될 수 있는, 구성 가능한(configurable) 컴퓨팅 리소스들(예를 들어, 네트워크, 네트워크 대역폭, 서버, 처리, 메모리, 저장소, 애플리케이션, 가상 머신, 및 서비스)의 공유 풀에 대한 편리한 주문형(on-demand) 네트워크 액세스를 가능하게 하는 서비스 전달 모델이다. 이 클라우드 모델은 적어도 5가지의 특성(characteristics), 적어도 3가지 서비스 모델(service models), 및 적어도 4가지 배치 모델(deployment models)을 포함할 수 있다.
[0074] 클라우드 컴퓨팅 특성들은 다음과 같다:
[0075] 주문형 셀프-서비스(On-demand self-service): 클라우드 소비자는, 서비스 제공자와의 인적 상호작용을 필요로 하지 않고 필요한 만큼 자동적으로, 서버 시간(server time) 및 네트워크 스토리지 같은 컴퓨팅 기능들을 일방적으로 제공(provision)할 수 있다.
[0076] 광역 네트워크 액세스(Broad network access): 혼성의 씬 또는 씩 클라이언트 플랫폼들(heterogeneous thin or thick client platforms)(예를 들어, 모바일폰, 랩탑, 및 PDA)에 의한 사용을 장려하는 표준 메커니즘들을 통해 액세스되는 기능들을 네트워크를 통해서 이용할 수 있다.
[0077] 리소스 풀링(Resource pooling): 제공자의 컴퓨팅 리소스들은 멀티-테넌트 모델(a multi-tenant model)을 이용하여, 각기 다른 물리적 및 가상 리소스들을 요구(demand)에 따라 동적으로 할당 및 재할당하면서, 다수의 소비자들에게 서비스할 수 있도록 풀에 넣어둔다(pooled). 소비자는 일반적으로 제공된 리소스들의 정확한 위치를 제어할 수 없거나 그에 대한 지식이 없지만 더 높은 추상 수준에서(예를 들어, 국가, 주, 또는 데이터센터) 위치를 명시할 수 있다는 점에서 위치 독립성이 있다.
[0078] 기민한 탄력성(Rapid elasticity): 용량들(capabilities)이 기민하게 탄력적으로 제공되어 (어떤 경우엔 자동으로) 신속히 규모를 확장할 수도 있고(scale out) 그리고 탄력적으로 릴리스 되어 신속히 규모를 축소할 수도 있다(scale in). 소비자에게 제공할 수 있는 가능성이 종종 무제한이고 언제든지 얼마든 구매할 수 있는 것처럼 보인다.
[0079] 측정 가능한 서비스(Measured service): 클라우드 시스템은 리소스 사용을 자동으로 제어하고 최적화하는데, 서비스의 유형(예를 들어, 저장소, 처리, 대역폭, 및 활성 사용자 계정)에 적절한 추상화 수준에서(at some level of abstraction) 계측 기능을 이용하여서 그렇게 한다. 리소스 사용량은 모니터 되고, 제어되고, 그리고 보고될 수 있으며 이로써 이용하는 서비스의 제공자와 사용자 모두에게 투명성을 제공한다.
[0080] 서비스 모델들(Service Models)은 다음과 같다:
[0081] 소프트웨어 서비스(Software as a Service)(SaaS): 소비자에게 제공되는 서비스는 클라우드 인프라스트럭처 상에서 실행되는 제공자의 애플리케이션들을 사용하게 해주는 것이다. 애플리케이션들은 웹 브라우저(예를 들어, 웹기반 이메일) 같은 씬(thin) 클라이언트 인터페이스를 통해 여러 클라이언트 장치들에서 액세스 가능하다. 소비자는 네트워크, 서버, 운영체제, 스토리지, 또는 개별 애플리케이션 성능을 포함하는 하부 클라우드 인프라스트럭처를 관리하거나 제어하지 않는다. 단, 제한된 사용자-특화 애플리케이션 구성 세팅들은 예외로서 가능하다.
[0082] 플랫폼 서비스(Platform as a Service)(PaaS): 소비자에게 제공되는 서비스는 제공자에 의해 지원되는 프로그래밍 언어들 및 도구들을 이용하여 생성된 소비자-생성 또는 획득 애플리케이션들을 클라우드 인프라스트럭처에 배치하게 해주는 것이다. 소비자는 네트워크, 서버, 운영체제, 또는 저장소를 포함하는 하부 클라우드 인프라스트럭처를 관리하거나 제어하지 않는다. 그러나 배치된 애플리케이션들에 대해서 그리고 가능한 경우 애플리케이션 호스팅 환경 구성들에 대해서 제어할 수 있다.
[0083] 인프라스트럭처 서비스(Infrastructure as a Service)(IaaS): 소비자에게 제공되는 서비스는 처리, 저장소, 네트워크, 및 기타 기본 컴퓨팅 리소스들을 제공하여 주는 것이며, 여기서 소비자는 임의의 소프트웨어를 배치 및 실행할 수 있고, 이 소프트웨어에는 운영체제와 애플리케이션들이 포함될 수 있다. 소비자는 하부 클라우드 인프라스트럭처를 관리하거나 제어하지 않지만, 운영체제, 스토리지, 배치된 애플리케이션들, 및 가능한 경우 선택된 네트워킹 컴포넌트들의 제한적인 제어(예를 들어, 호스트 방화벽)에 대하여 제어할 수 있다.
[0084] 배치 모델들(Deployment Models)은 다음과 같다:
[0085] 사설 클라우드(Private cloud): 클라우드 인프라스트럭처는 오직 한 조직(an organization)을 위해서 운영되고, 그 조직 또는 제3자에 의해 관리될 수 있으며 옥내(on-premises) 또는 옥외(on-premises)에 위치할 수 있다
[0086] 커뮤니티 클라우드(Community cloud): 클라우드 인프라스트럭처는 여러 조직들에 의해 공유되고 관심사(예를 들어, 선교, 보안 요건, 정책, 및 규정 준수 심사)를 공유하는 특정 커뮤니티를 지원하며, 여러 조직들 또는 제3자에 의해 관리될 수 있으며 옥내(on-premises) 또는 옥외(off-premises)에 위치할 수 있다.
[0087] 공공 클라우드(Public cloud): 클라우드 인프라스트럭처는 일반 대중 또는 대규모 산업 집단에서 이용할 수 있으며 클라우드 서비스를 판매하는 조직이 소유한다.
[0088] 하이브리드 클라우드(Hybrid cloud): 클라우드 인프라스트럭처는 둘 또는 그 이상의 클라우드들(사설, 커뮤니티, 또는 공공)이 혼합된 구성이며, 이들은 고유한 독립체들로 있지만 데이터 및 애플리케이션 이식가능성(portability)을 가능하게 해주는 표준화된 또는 소유권 있는 기술(예를 들어, 클라우드들 사이의 부하 균형을 위한 클라우드 버스팅(cloud bursting))에 의해 서로 결합되어 있다.
[0089] 클라우드 컴퓨팅 환경은 무국적(statelessness), 낮은 결합(low coupling), 모듈 방식(modularity), 및 의미적 상호 운용성(semantic interoperability)에 집중하는 서비스를 지향한다. 클라우드 컴퓨팅의 중심에는 상호 연결된 노드들의 네트워크를 포함하는 인프라스트럭처가 있다. 하나의 그러한 노드가 도 1에 도시한 노드(10)이다.
[0090] 컴퓨팅 노드(10)는 적절한 클라우드 컴퓨팅 노드의 한 예일 뿐이며 본 명세서에서 기술된 본 발명의 실시 예들의 사용 또는 기능의 범위를 한정하려는 의도가 있는 것은 아니다. 여하간, 클라우드 컴퓨팅 노드(10)는 전술한 모든 기능이 구현가능하고 그리고/또는 수행하는 것이 가능하다.
[0091] 이제 도 10을 참조하면, 예시적인 클라우드 컴퓨팅 환경(50)이 도시된다. 도시된 바와 같이, 클라우드 컴퓨팅 환경(50)은 하나 또는 그 이상의 클라우드 컴퓨팅 노드들(10)을 포함하며, 이들은 예를 들어 개인 휴대 정보 단말기(PDA) 또는 휴대폰(54A), 데스크탑 컴퓨터(54B), 랩탑 컴퓨터(54C), 및/또는 자동차용 컴퓨터 시스템(54N)과 통신할 수 있다. 노드들(10)은 서로 통신할 수 있다. 이들은 여기에 기술된 바와 같은 사설, 커뮤니티, 공공, 또는 하이브리드 클라우드들 또는 이들의 조합 등의 하나 또는 그 이상의 네트워크들에서 물리적으로 또는 가상으로 그룹화될 수 있다(도시되지 않음). 이것은 클라우드 소비자가 로컬 컴퓨팅 장치 상에 리소스들을 유지할 필요가 없게 클라우드 컴퓨팅 환경(50)이 인프라스트럭처, 플랫폼들 및/또는 소프트웨어를 서비스로서 제공할 수 있게 해준다. 도 10에 도시된 컴퓨팅 장치들(54A-N)의 유형들은 단지 예시의 목적으로 기술한 것이며 컴퓨팅 노드들(10)과 클라우드 컴퓨팅 환경(50)은 모든 유형의 네트워크 및/또는 네트워크 주소지정가능 연결을 통해서 (예를 들어, 웹 브라우저를 사용하여) 모든 유형의 컴퓨터화된 장치와 통신할 수 있다는 것을 이해해야 한다.
[0092] 이제 도 11을 참조하면, 클라우드 컴퓨팅 환경(50) (도 10)에 의해 제공되는 일 세트의 기능별 추상화 계층들이 도시된다. 도 11에 도시된 컴포넌트들, 계층들, 및 기능들은 단지 예시의 목적이며 본 발명의 바람직한 실시 예들은 이것에 한정되지 않는다는 것을 미리 이해해야 한다. 도시된 바와 같이, 다음의 계층들과 그에 대응하는 기능들이 제공된다:
[0093] 하드웨어 및 소프트웨어 계층(60)은 하드웨어 및 소프트웨어 컴포넌트들을 포함한다. 하드웨어 컴포넌트들의 예들에는 메인프레임들(61); RISC(Reduced Instruction Set Computer) 아키텍처 기반 서버들(62); 서버들(63); 블레이드 서버들(64); 저장장치들(65); 그리고 네트워크 및 네트워킹 컴포넌트들(66)이 포함된다. 일부 실시 예들에서, 소프트웨어 컴포넌트들은 네트워크 애플리케이션 서버 소프트웨어(67) 및 데이터베이스 소프트웨어(68)를 포함한다.
[004] 가상화 계층(70)은 추상화 계층을 제공하며 이로부터 다음의 가상 실체들의 예들이 제공될 수 있다: 가상 서버들(71); 가상 저장소(72); 가상 전용 네트워크를 포함하는, 가상 네트워크들(73); 가상 애플리케이션들 및 운영체제들(74); 및 가상 클라이언트들(75).
[0095] 한 예에서, 관리 계층(80)은 아래에 기술하는 기능들을 제공한다. 리소스 제공(Resource provisioning)(81)은 클라우드 컴퓨팅 환경 내에서 작업들을 수행하는 데 이용되는 컴퓨팅 리소스들 및 기타 리소스들의 동적 조달을 제공한다. 계측 및 가격 책정(Metering and Pricing)(82)은 리소스들이 클라우드 컴퓨팅 환경 내에서 이용될 때 비용 추적, 및 이 리소스들의 소비에 대한 요금 청구를 제공한다. 한 예에서, 이 리소스들은 애플리케이션 소프트웨어 라이센스를 포함할 수 있다. 보안(Security)은 데이터 및 기타 리소스들뿐 아니라 클라우드 소비자들과 작업들에 대한 신원 확인을 제공한다. 사용자 포털(User portal)(83)은 소비자들 및 시스템 관리자들에게 클라우드 컴퓨팅 환경에 대한 액세스를 제공한다. 서비스 수준 관리(Service level management)(84)는 요구되는 서비스 수준이 충족되도록 클라우드 컴퓨팅 리소스 할당 및 관리를 제공한다. 서비스 수준 협약서(SLA) 계획 및 충족(planning and fulfillment)(85)은 SLA에 부합하는 예상되는 미래 요건에 맞는 클라우드 컴퓨팅 리소스들의 사전-배치(pre-arrangement) 및 조달(procurement)을 제공한다.
[0096] 워크로드 계층(90)은 클라우드 컴퓨팅 환경이 이용될 수 있는 기능들의 예들을 제공한다. 이 계층에서 제공될 수 있는 워크로드들과 기능들의 예들은 다음과 같다: 맵핑 및 네비게이션(91); 소프트웨어 개발 및 라이프사이클 관리(92); 가상 교실 교육 전달(93); 데이터 분석 처리(94); 트랜잭션 처리(95); 및 명령 처리(96).
[0097] 본 발명은 시스템, 방법, 및/또는 통합의 모든 가능한 기술적 세부 수준에서 컴퓨터 프로그램 제품이 될 수 있다. 컴퓨터 프로그램 제품은 컴퓨터 판독 가능 저장 매체를 포함할 수 있으며, 이 매체 상에 프로세서가 본 발명의 실시 예들을 수행하도록 하는 컴퓨터 판독 가능 프로그램 명령들을 갖는다.
[0098] 상기 컴퓨터 판독 가능 저장 매체는 명령 실행 장치에 의해 사용될 명령들을 유지 및 저장할 수 있는 유형의(tangible) 장치일 수 있다. 상기 컴퓨터 판독 가능 저장 매체는, 예를 들면, 전자 저장 장치, 자기 저장 장치, 광 저장 장치, 전자기 저장 장치, 반도체 저장 장치, 또는 전술한 것들의 모든 적절한 조합일 수 있으며, 그러나 이에 한정되지는 않는다. 컴퓨터 판독 가능 저장 매체의 더 구체적인 예들의 비포괄적인 목록에는 다음이 포함될 수 있다: 휴대용 컴퓨터 디스켓, 하드 디스크, 랜덤 액세스 메모리(RAM), 판독-전용 메모리(ROM), 소거 및 프로그램가능 판독-전용 메모리(EPROM 또는 플래시 메모리), 정적 랜덤 액세스 메모리(SRAM), 휴대용 컴팩트 디스크 판독-전용 메모리(CD-ROM), 디지털 다용도 디스크(DVD), 메모리 스틱, 플로피 디스크, 천공-카드들 또는 명령들이 기록된 홈에 있는 융기된 구조들 같이 기계적으로 인코딩된 장치, 및 전술한 것들의 모든 적절한 조합. 본 명세서에서 사용될 때, 컴퓨터 판독 가능 저장 매체는 무선 전파들이나 다른 자유롭게 전파되는 전자기파들, 도파관이나 기타 전송 매체(예를 들어, 광섬유 케이블을 통해 전달되는 광 펄스들)를 통해 전파되는 전자기파들, 또는 선(wire)을 통해 전송되는 전기 신호들 같이 그 자체로 일시적인(transitory) 신호들로 해석되지는 않는다.
[0099] 본 명세서에 기술되는 컴퓨터 판독 가능 명령들은, 예를 들어, 인터넷, 근거리 통신망, 광역 통신망 및/또는 무선 네트워크 등의 통신망(네트워크)을 통해 컴퓨터 판독 가능 저장 매체로부터 각각 컴퓨팅/처리 디바이스들로 또는 외부 저장 장치로부터 외부 컴퓨터로 다운로드 될 수 있다. 상기 통신망은 구리 전송 케이블들, 광 전송 섬유들, 무선 전송, 라우터들, 방화벽들, 스위치들, 게이트웨이 컴퓨터들 및/또는 엣지 서버들을 포함할 수 있다. 각 컴퓨팅/처리 장치 내 네트워크 어댑터 카드 또는 네트워크 인터페이스는 상기 통신망으로부터 컴퓨터 판독 가능 프로그램 명령들을 수신하고 그 컴퓨터 판독 가능 프로그램 명령들을 각각의 컴퓨팅/처리 장치 내의 컴퓨터 판독 가능 저장 매체에 저장하기 위해 전송한다.
[00100] 본 발명의 연산들을 실행하기 위한 컴퓨터 판독 가능 프로그램 명령들은 Smalltalk, C++ 또는 그와 유사 언어 등의 객체 지향 프로그래밍 언어와 "C" 프로그래밍 언어 또는 그와 유사한 언어 등의 종래의 절차적 프로그래밍 언어들을 포함하여, 하나 또는 그 이상의 프로그래밍 언어들을 조합하여 작성된(written) 어셈블러 명령들, 명령-세트-아키텍처(ISA) 명령들, 머신 명령들, 머신 종속 명령들, 마이크로코드, 펌웨어 명령들, 상태-셋팅 데이터, 집적회로를 위한 구성 데이터, 또는 소스 코드나 목적 코드일 수 있다. 상기 컴퓨터 판독 가능 프로그램 명령들은 전적으로 사용자의 컴퓨터상에서, 부분적으로 사용자의 컴퓨터상에서, 독립형(stand-alone) 소프트웨어 패키지로서, 부분적으로 사용자의 컴퓨터상에서 그리고 부분적으로 원격 컴퓨터상에서 또는 전적으로 원격 컴퓨터나 서버상에서 실행될 수 있다. 위에서 마지막의 경우에, 원격 컴퓨터는 근거리 통신망(LAN) 또는 광역 통신망(WAN)을 포함한 모든 종류의 네트워크를 통해서 사용자의 컴퓨터에 접속될 수 있고, 또는 이 접속은 (예를 들어, 인터넷 서비스 제공자를 이용한 인터넷을 통해서) 외부 컴퓨터에 이루어질 수도 있다. 일부 실시 예들에서, 예를 들어 프로그램 가능 로직 회로, 필드-프로그램 가능 게이트 어레이들(FPGA), 또는 프로그램 가능 로직 어레이들(PLA)을 포함한 전자 회로는 본 발명의 실시 예들을 수행하기 위해 전자 회로를 맞춤화하도록 상기 컴퓨터 판독 가능 프로그램 명령들의 상태 정보를 활용하여 상기 컴퓨터 판독 가능 프로그램 명령들을 실행할 수 있다.--
[00101] 본 명세서에서는 본 발명의 실시 예들에 따른 방법들, 장치들(시스템들), 및 컴퓨터 프로그램 제품들의 순서 예시도들 및/또는 블록도들을 참조하여 본 발명의 실시 예들을 기술한다. 순서 예시도들 및/또는 블록도들의 각 블록과 순서 예시도들 및/또는 블록도들 내 블록들의 조합들은 컴퓨터 판독 가능 프로그램 명령들에 의해 구현될 수 있다는 것을 이해할 수 있을 것이다.
[00102] 이들 컴퓨터 판독 가능 프로그램 명령들은 범용 컴퓨터, 특수목적용 컴퓨터, 또는 기타 프로그램가능 데이터 처리 장치의 프로세서에 제공되어 머신(machine)을 생성하고, 그렇게 하여 그 명령들이 상기 컴퓨터 또는 기타 프로그램가능 데이터 처리 장치의 프로세서를 통해서 실행되어, 상기 순서도 및/또는 블록도의 블록 또는 블록들에 명시된 기능들/동작들을 구현하기 위한 수단을 생성할 수 있다. 이들 컴퓨터 판독 가능 프로그램 명령들은 또한 컴퓨터 판독 가능 저장 매체에 저장될 수 있으며, 컴퓨터, 프로그램가능 데이터 처리 장치 및/또는 기타 장치들에 지시하여 명령들이 저장된 상기 컴퓨터 판독 가능 저장 매체가 상기 순서도 및/또는 블록도의 블록 또는 블록들에 명시된 기능/동작의 특징들을 구현하는 명령들을 포함하는 제조품(an article of manufacture)을 포함하도록 특정한 방식으로 기능하게 할 수 있다.
[00103] 상기 컴퓨터 판독 가능 프로그램 명령들은 또한 컴퓨터, 기타 프로그램가능 데이터 처리 장치, 또는 다른 디바이스에 로드 되어, 상기 컴퓨터, 기타 프로그램가능 장치 또는 다른 디바이스에서 일련의 동작 단계들이 수행되게 하여 컴퓨터 구현 프로세스를 생성하며, 그렇게 하여 상기 컴퓨터, 기타 프로그램가능 장치, 또는 다른 장치 상에서 실행되는 명령들이 순서도 및/또는 블록도의 블록 또는 블록들에 명시된 기능들/동작들을 구현할 수 있다.
[00104] 도면들 내 순서도 및 블록도들은 본 발명의 여러 실시 예들에 따른 시스템들, 방법들 및 컴퓨터 프로그램 제품들의 가능한 구현들의 아키텍처, 기능(functionality), 및 연산(operation)을 예시한다. 이와 관련하여, 상기 순서도 또는 블록도들 내 각 블록은 상기 명시된 논리적 기능(들)을 구현하기 위한 하나 또는 그 이상의 실행 가능한 명령들을 포함한 모듈, 세그먼트 또는 명령들의 일부분을 나타낼 수 있다. 일부 다른 구현들에서, 상기 블록에 언급되는 기능들은 도면들에 언급된 순서와 다르게 일어날 수도 있다. 예를 들면, 연속으로 도시된 두 개의 블록들은 실제로는 사실상 동시에 실행될 수도 있고, 또는 이 두 블록들은 때때로 관련된 기능에 따라서는 역순으로 실행될 수도 있다. 블록도들 및/또는 순서 예시도의 각 블록, 및 블록도들 및/또는 순서 예시도 내 블록들의 조합들은 특수목적용 하드웨어 및 컴퓨터 명령들의 명시된 기능들 또는 동작들, 또는 이들의 조합들을 수행하는 특수목적용 하드웨어-기반 시스템들에 의해 구현될 수 있다는 것에 또한 유의한다.
[00105] 전술한 것에 추가하여, 본 발명의 하나 또는 그 이상의 실시 예들은 고객 환경들의 관리를 공급하는 서비스 제공자에 의해 제공, 공급, 배치, 관리, 서비스 될 수 있다. 예를 들면, 서비스 제공자는 하나 또는 그 이상의 고객들을 위해 본 발명의 하나 또는 그 이상의 실시 예들을 수행하는 컴퓨터 코드 및/또는 컴퓨터 인프라스트럭처의 제작, 유지, 지원 등을 할 수 있다. 그 대가로, 서비스 제공자는, 예를 들어, 가입제(subscription) 및/또는 수수료 약정에 따라 고객으로부터 대금을 수령할 수 있다. 추가적으로 또는 선택적으로, 서비스 제공자는 하나 또는 그 이상의 제3자들에게 광고 콘텐츠를 판매하고 대금을 수령할 수 있다.
[00106] 한 실시 예에서, 본 발명의 하나 또는 그 이상의 실시 예들을 수행하기 위해 하나의 애플리케이션이 배치될 수 있다. 한 예로서, 하나의 애플리케이션의 배치는 본 발명의 하나 또는 그 이상의 실시 예들을 수행하기 위해 동작 가능한 컴퓨터 인프라스트럭처를 제공하는 것을 포함할 수 있다.
[00107] 추가의 예로서, 컴퓨터 판독 가능 코드를 컴퓨팅 시스템으로 통합하는 것을 포함하는 컴퓨팅 인프라스트럭처가 배치될 수 있으며, 그 컴퓨팅 시스템에서 상기 코드는 상기 컴퓨팅 시스템과 결합하여 본 발명의 하나 또는 그 이상의 실시 예들을 수행할 수 있다.
[00108] 추가 예로서, 컴퓨터 판독 가능 코드를 컴퓨터 시스템으로 통합시키는 것을 포함하는 컴퓨팅 인프라스트럭처를 통합하기 위한 프로세스가 제공될 수 있다. 상기 컴퓨터 시스템은 컴퓨터 판독 가능 매체를 포함하고, 상기 컴퓨터 시스템에서 상기 컴퓨터 매체는 본 발명의 하나 또는 그 이상의 실시 예들을 포함한다. 상기 코드는 상기 컴퓨터 시스템과 결합하여 본 발명의 하나 또는 그 이상의 실시 예들을 수행할 수 있다.
[00109] 위에서 다양한 실시 예들이 기술되었지만, 이들은 단지 예시들일 뿐이다. 예를 들면, 다른 아키텍처들의 컴퓨팅 환경들이 본 발명의 하나 또는 그 이상의 실시 예들을 포함하고 사용하는 데 사용될 수 있다. 또한, 다른(different) 명령들, 명령 포맷들, 명령 필드들 및/또는 명령 값들이 사용될 수 있다. 많은 변형들이 가능하다.
[00110] 또한, 다른 유형의 컴퓨팅 환경들도 유익을 얻을 수 있고 사용될 수 있다. 예로서, 프로그램 코드를 저장 및/또는 실행하기에 적합한 데이터 처리 시스템이 사용될 수 있으며, 이 시스템은 시스템 버스를 통해서 메모리 엘리먼트들에 직접적으로 또는 간접적으로 결합된 적어도 두 개의 프로세서를 포함한다. 상기 메모리 엘리먼트들은, 예를 들어, 프로그램 코드의 실제 실행 동안 사용되는 로컬 메모리, 대용량 저장소(bulk storage), 및 코드가 실행 동안에 대용량 저장소로부터 검색되어야 하는 횟수를 줄이기 위해 적어도 일부 프로그램 코드의 임시 저장(temporary storage)을 제공하는 캐시 메모리를 포함한다.
[00111] 입력/출력 또는 I/O 장치들(키보드, 디스플레이, 포인팅 장치, DASD, 테이프, CD들, DVD들, 썸 드라이브들 및 기타 메모리 매체 등을 포함하나 이에 한정되지는 않음)은 직접 또는 중개(intervening) I/O 제어기들을 통해서 상기 시스템에 결합될 수 있다. 네트워크 어댑터 또한 상기 시스템에 결합되어 상기 데이터 처리 시스템이 중개하는 사설 또는 공공 네트워크를 통해서 기타 데이터 처리 시스템 또는 원격 포인터 또는 저장 장치에 결합되는 것을 가능하게 한다. 모뎀, 케이블 모뎀, 및 이더넷 카드는 이용 가능한 유형의 네트워크 어댑터들의 단지 일부 예이다.
[00112] 본 명세서 내에 사용된 용어들은 단지 본 발명의 특정 실시 예들을 기술할 목적으로 사용된 것이지 한정하려는 의도로 사용된 것은 아니다. 본 명세서에서 사용할 때, 단수 형태는 그 컨텍스트에서 그렇지 않은 것으로 명시되어 있지 않으면, 복수 형태도 또한 포함할 의도로 기술된 것이다. 또한, "포함한다" 및/또는 "포함하는" 이라는 말들은 본 명세서에서 사용될 때, 언급되는 특징들, 정수들, 단계들, 동작들, 엘리먼트들, 및/또는 컴포넌트들의 존재를 명시하지만, 하나 또는 그 이상의 다른 특징들, 정수들, 단계들, 동작들, 엘리먼트들, 컴포넌트들 및/또는 이들의 그룹들의 존재 또는 추가를 배제하는 것은 아니라는 것을 이해할 수 있을 것이다.
[00113] 이하의 청구항들에서, 대응하는 구조들(structures), 재료들(materials), 동작들(acts), 및 모든 수단의 등가물들 또는 단계 플러스 기능 엘리먼트들은, 만일 있다면, 구체적으로 청구되는 다른 청구된 엘리먼트들과 함께 그 기능을 수행하기 위한 구조, 재료, 또는 동작을 포함할 의도가 있다. 본 발명의 하나 또는 그 이상의 실시 예들에 대한 설명은 예시와 설명의 목적으로 제공되는 것이며, 개시되는 형태로 빠짐없이 총 망라하거나 한정하려는 의도가 있는 것은 아니다. 이 기술 분야에서 통상의 지식을 가진 자라면 많은 수정들 및 변형들이 있을 수 있다는 것을 알 수 있다. 본 발명의 실시 예는 여러 특징들 및 실제 응용을 가장 잘 설명하기 위해 그리고 고려되는 구체적인 용도에 적합하게 여러 수정들을 갖는 다양한 실시 예들을 이 기술 분야에서 통상의 지식을 가진 자들이 이해할 수 있도록 하기 위해, 선택되고 기술되었다.

Claims (11)

  1. 컴퓨팅 환경 내에서 처리를 용이하게 하는 방법(a method)에 있어서, 상기 방법은: 
    컴퓨팅 환경의 다수 처리 장치들에 의해서 공유된 공동 저장소 위치(a common storage location )를 액세스(access) 하기 위한 저장소 오퍼랜드 요청(a storage operand request)이 제한되었는지(restrained)를 결정하는 단계(determining); 및
    상기 저장소 오퍼랜드 요청이 제한되었다고 결정하는 것에 기초하여, 상기 저장소 오퍼랜드 요청에 따라 상기 공동 저장소 위치에 대한 액세스를 요청하는 것을 일시적으로 금지하는 단계(temporarily suppressing)를 포함하는
    방법.
  2. 제 1 항에 있어서, 상기 일시적으로 금지하는 단계는 상기 저장소 오퍼랜드 요청을 처리하기 위하여 상기 컴퓨팅 환경의 다수 처리 장치들에 의해서 공유된 공동 저장소 위치에 대한 액세스를 요구하는 상기 저장소 오퍼랜드 요청의 처리를 금지하는 단계를 포함하는
    방법.
  3. 제 2 항에 있어서, 상기 방법은 처리 장치에 의해서 수행되고, 상기 처리 장치는 상기 저장소 오퍼랜드 요청이 상기 처리 장치의 전용 캐시(a private cache)를 히트(hit)하는 지를 더 결정하며, 상기 저장소 오퍼랜드 요청이 상기 전용 캐시에서 히트하는 것에 기초하여, 상기 금지하는 단계를 수행함이 없이, 상기 전용 캐시를 사용하여 상기 저장소 오퍼랜드 요청의 처리를 계속하는
    방법.
  4. 제 1 항에 있어서, 상기 금지하는 단계는 상기 저장소 오퍼랜드 요청과 연관된, 명령, 또는 명령의 연산이 완료될(next to complete)때까지 상기 저장소 오퍼랜드 요청의 처리를 금지하는 단계를 포함하는
    방법.
  5. 제 1 항에 있어서, 상기 방법은 상기 컴퓨팅 환경의 다수 처리 장치들에 의해서 공유된 공동 저장소 위치에 대한 액세스를 요구하는 상기 저장소 오퍼랜드 요청을 저장소 오퍼랜드 요청들의 큐(queue)에 배치하는 단계(placing)를 포함하는
    방법.
  6. 제 5 항에 있어서, 상기 일시적으로 금지하는 단계는 상기 저장소 오퍼랜드 요청과 연관된, 명령, 또는 명령의 연산이 완료될(next to complete) 때까지 저장소 오퍼랜드 요청들의 큐(queue)에 상기 저장소 오퍼랜드 요청을 유지하는 단계(retaining)를 포함하는
    방법.
  7. 제 1 항에 있어서, 상기 방법은 상기 저장소 오퍼랜드 요청이 제한되었음을 식별하는 단계를 더 포함하고, 상기 식별하는 단계는 다음 순차 명령의 오퍼랜드와 연관된 액세스 의도를 표시하는 액세스 의도 명령(an access intent instruction)을, 처리 장치에 의해서, 획득하는 단계를 포함하며, 상기 액세스 의도는 상기 저장소 오퍼랜드 요청의 사용이 제한됨을 표시하는
    방법.
  8. 제 7 항에 있어서, 상기 액세스 의도 명령은 다음 명령 액세스 의도 명령(a next instruction access intent instruction)이고, 상기 저장소 오퍼랜드 요청이 제한되었음을 식별하는 단계는 상기 다음 명령 액세스 의도 명령 내에 제한 액세스 의도 코드(a restrain access intent code)를 제공하는 단계를 포함하는
    방법.
  9. 제 1 항에 있어서, 상기 저장소 오퍼랜드 요청은 명령 또는 명령의 연산과 연관된 추측 저장소 오퍼랜드 요청(a speculative storage operand request)인
    방법.
  10. 이전의 방법 청구항들 중 하나에 따른 상기 방법의 모든 단계들을 수행하도록 구성된 수단을 포함하는
    시스템.
  11. 컴퓨터 프로그램이 컴퓨터 시스템 상에서 실행될 때, 이전의 방법 청구항들 중 하나에 따른 상기 방법의 모든 단계들을 수행하도록 구성된 명령들을 포함하는
    컴퓨터 프로그램.
KR1020197017086A 2017-01-12 2018-01-09 제한된 저장소 오퍼런드 요청 처리의 일시적 금지 KR102238188B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/404,254 2017-01-12
US15/404,254 US10521351B2 (en) 2017-01-12 2017-01-12 Temporarily suppressing processing of a restrained storage operand request
PCT/EP2018/050461 WO2018130522A1 (en) 2017-01-12 2018-01-09 Temporarily suppressing processing of a restrained storage operand request

Publications (2)

Publication Number Publication Date
KR20190086502A true KR20190086502A (ko) 2019-07-22
KR102238188B1 KR102238188B1 (ko) 2021-04-12

Family

ID=60953874

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197017086A KR102238188B1 (ko) 2017-01-12 2018-01-09 제한된 저장소 오퍼런드 요청 처리의 일시적 금지

Country Status (13)

Country Link
US (3) US10521351B2 (ko)
EP (1) EP3568754B1 (ko)
JP (1) JP7177572B2 (ko)
KR (1) KR102238188B1 (ko)
CN (1) CN110168498A (ko)
AU (1) AU2018208453B2 (ko)
CA (1) CA3037265A1 (ko)
IL (1) IL265557B (ko)
MX (1) MX2019012411A (ko)
RU (1) RU2724654C1 (ko)
TW (1) TWI665605B (ko)
WO (1) WO2018130522A1 (ko)
ZA (1) ZA201904787B (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10521351B2 (en) 2017-01-12 2019-12-31 International Business Machines Corporation Temporarily suppressing processing of a restrained storage operand request
US10572387B2 (en) 2018-01-11 2020-02-25 International Business Machines Corporation Hardware control of CPU hold of a cache line in private cache where cache invalidate bit is reset upon expiration of timer
US11880304B2 (en) 2022-05-24 2024-01-23 International Business Machines Corporation Cache management using cache scope designation

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008512785A (ja) * 2004-09-10 2008-04-24 カビウム・ネットワークス マルチコアプロセッサの格納命令の順序づけ
US20090019272A1 (en) * 2007-07-09 2009-01-15 Cypher Robert E Store queue architecture for a processor that supports speculative execution
JP2013519955A (ja) * 2010-02-18 2013-05-30 インターナショナル・ビジネス・マシーンズ・コーポレーション 独立ロード/ストア機構およびそのための命令を実行するための方法、システム、およびコンピュータ・プログラム
WO2013186266A2 (en) * 2012-06-15 2013-12-19 International Business Machines Corporation Next instruction access intent instruction

Family Cites Families (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4225921A (en) 1978-10-02 1980-09-30 Honeywell Information Systems Inc. Transfer control technique between two units included in a data processing system
JPS6432379A (en) 1987-07-29 1989-02-02 Hitachi Ltd Computer
US5175829A (en) 1988-10-25 1992-12-29 Hewlett-Packard Company Method and apparatus for bus lock during atomic computer operations
US5623632A (en) 1995-05-17 1997-04-22 International Business Machines Corporation System and method for improving multilevel cache performance in a multiprocessing system
US5761712A (en) 1995-06-07 1998-06-02 Advanced Micro Devices Data memory unit and method for storing data into a lockable cache in one clock cycle by previewing the tag array
US5963974A (en) 1997-04-14 1999-10-05 International Business Machines Corporation Cache intervention from a cache line exclusively holding an unmodified value
US6728866B1 (en) 2000-08-31 2004-04-27 International Business Machines Corporation Partitioned issue queue and allocation strategy
JP3729087B2 (ja) 2001-05-23 2005-12-21 日本電気株式会社 マルチプロセッサシステム、データ依存投機実行制御装置およびその方法
US6801986B2 (en) 2001-08-20 2004-10-05 Hewlett-Packard Development Company, L.P. Livelock prevention by delaying surrender of ownership upon intervening ownership request during load locked / store conditional atomic memory operation
JP3970705B2 (ja) * 2002-07-05 2007-09-05 富士通株式会社 アドレス変換装置、アドレス変換方法および2階層アドレス変換装置
US8892821B2 (en) 2003-12-10 2014-11-18 International Business Machines Corporation Method and system for thread-based memory speculation in a memory subsystem of a data processing system
CN100414518C (zh) 2004-11-24 2008-08-27 中国科学院计算技术研究所 改进的虚拟地址变换方法及其装置
US20070271450A1 (en) 2006-05-17 2007-11-22 Doshi Kshitij A Method and system for enhanced thread synchronization and coordination
US8190859B2 (en) 2006-11-13 2012-05-29 Intel Corporation Critical section detection and prediction mechanism for hardware lock elision
JP2008210027A (ja) 2007-02-23 2008-09-11 Toshiba Corp 計算機システム及び並列化コンパイラ
US8321637B2 (en) 2007-05-14 2012-11-27 International Business Machines Corporation Computing system with optimized support for transactional memory
US7975130B2 (en) * 2008-02-20 2011-07-05 International Business Machines Corporation Method and system for early instruction text based operand store compare reject avoidance
US8032709B2 (en) 2008-02-22 2011-10-04 International Business Machines Corporation System, method and computer program product for handling shared cache lines in a multi-processor environment
US20100058034A1 (en) * 2008-08-29 2010-03-04 International Business Machines Corporation Creating register dependencies to model hazardous memory dependencies
US20100205609A1 (en) * 2009-02-11 2010-08-12 Sun Microsystems, Inc. Using time stamps to facilitate load reordering
US8352398B2 (en) 2009-10-20 2013-01-08 Oracle International Corporation Time-based conflict resolution
US8601240B2 (en) * 2010-05-04 2013-12-03 Oracle International Corporation Selectively defering load instructions after encountering a store instruction with an unknown destination address during speculative execution
US8516200B2 (en) 2010-09-07 2013-08-20 International Business Machines Corporation Avoiding cross-interrogates in a streaming data optimized L1 cache
US8549504B2 (en) 2010-09-25 2013-10-01 Intel Corporation Apparatus, method, and system for providing a decision mechanism for conditional commits in an atomic region
US8683129B2 (en) 2010-10-21 2014-03-25 Oracle International Corporation Using speculative cache requests to reduce cache miss delays
JP2013246496A (ja) 2012-05-23 2013-12-09 Renesas Electronics Corp 半導体装置
GB2501582B (en) * 2013-02-11 2014-12-24 Imagination Tech Ltd Speculative load issue
KR20160127168A (ko) * 2013-03-15 2016-11-02 인텔 코포레이션 메모리 시스템
US9223701B2 (en) 2013-04-12 2015-12-29 Arm Limited Data processing apparatus and method for performing load-exclusive and store-exclusive operations
US9606806B2 (en) * 2013-06-25 2017-03-28 Advanced Micro Devices, Inc. Dependence-based replay suppression
US9513904B2 (en) * 2013-10-15 2016-12-06 Mill Computing, Inc. Computer processor employing cache memory with per-byte valid bits
CN103714288B (zh) 2013-12-26 2016-05-25 华中科技大学 一种数据流跟踪方法
US9411644B2 (en) 2014-03-07 2016-08-09 Cavium, Inc. Method and system for work scheduling in a multi-chip system
US9817693B2 (en) 2014-03-14 2017-11-14 International Business Machines Corporation Coherence protocol augmentation to indicate transaction status
US9501284B2 (en) * 2014-09-30 2016-11-22 Apple Inc. Mechanism for allowing speculative execution of loads beyond a wait for event instruction
US9569265B2 (en) 2014-10-07 2017-02-14 Check Point Software Technologies Ltd. Optimization of data locks for improved write lock performance and CPU cache usage in multi core architectures
US20160328237A1 (en) * 2015-05-07 2016-11-10 Via Alliance Semiconductor Co., Ltd. System and method to reduce load-store collision penalty in speculative out of order engine
US10185564B2 (en) * 2016-04-28 2019-01-22 Oracle International Corporation Method for managing software threads dependent on condition variables
US10521351B2 (en) 2017-01-12 2019-12-31 International Business Machines Corporation Temporarily suppressing processing of a restrained storage operand request
US10621090B2 (en) 2017-01-12 2020-04-14 International Business Machines Corporation Facility for extending exclusive hold of a cache line in private cache

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008512785A (ja) * 2004-09-10 2008-04-24 カビウム・ネットワークス マルチコアプロセッサの格納命令の順序づけ
US20090019272A1 (en) * 2007-07-09 2009-01-15 Cypher Robert E Store queue architecture for a processor that supports speculative execution
JP2013519955A (ja) * 2010-02-18 2013-05-30 インターナショナル・ビジネス・マシーンズ・コーポレーション 独立ロード/ストア機構およびそのための命令を実行するための方法、システム、およびコンピュータ・プログラム
WO2013186266A2 (en) * 2012-06-15 2013-12-19 International Business Machines Corporation Next instruction access intent instruction

Also Published As

Publication number Publication date
MX2019012411A (es) 2021-11-17
KR102238188B1 (ko) 2021-04-12
US11366759B2 (en) 2022-06-21
WO2018130522A1 (en) 2018-07-19
CA3037265A1 (en) 2018-07-19
JP2020516970A (ja) 2020-06-11
AU2018208453B2 (en) 2020-10-22
US20190391922A1 (en) 2019-12-26
US10521351B2 (en) 2019-12-31
IL265557A (en) 2019-05-30
US20180196754A1 (en) 2018-07-12
US10956337B2 (en) 2021-03-23
TWI665605B (zh) 2019-07-11
US20210096998A1 (en) 2021-04-01
CN110168498A (zh) 2019-08-23
AU2018208453A1 (en) 2019-06-13
EP3568754B1 (en) 2023-06-07
EP3568754A1 (en) 2019-11-20
ZA201904787B (en) 2022-04-28
EP3568754C0 (en) 2023-06-07
JP7177572B2 (ja) 2022-11-24
TW201830235A (zh) 2018-08-16
IL265557B (en) 2021-02-28
RU2724654C1 (ru) 2020-06-25

Similar Documents

Publication Publication Date Title
KR102313021B1 (ko) 전용 캐시에서 캐시 라인의 배타적 홀드를 연장하기 위한 퍼실리티
US11366759B2 (en) Temporarily suppressing processing of a restrained storage operand request
US20190079872A1 (en) Controlling a rate of prefetching based on bus bandwidth
US20190196836A1 (en) Selective suppression of instruction translation lookaside buffer (itlb) access
US10572387B2 (en) Hardware control of CPU hold of a cache line in private cache where cache invalidate bit is reset upon expiration of timer
US10592142B2 (en) Toggling modal transient memory access state
US9619393B1 (en) Optimized use of hardware micro partition prefetch based on software thread usage

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right