KR20170086484A - 기록 요청 처리 방법, 프로세서, 그리고 컴퓨터 - Google Patents

기록 요청 처리 방법, 프로세서, 그리고 컴퓨터 Download PDF

Info

Publication number
KR20170086484A
KR20170086484A KR1020177011796A KR20177011796A KR20170086484A KR 20170086484 A KR20170086484 A KR 20170086484A KR 1020177011796 A KR1020177011796 A KR 1020177011796A KR 20177011796 A KR20177011796 A KR 20177011796A KR 20170086484 A KR20170086484 A KR 20170086484A
Authority
KR
South Korea
Prior art keywords
mirror
processor
packet
write
target data
Prior art date
Application number
KR1020177011796A
Other languages
English (en)
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 KR20170086484A publication Critical patent/KR20170086484A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • 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/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2056Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
    • G06F11/2071Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring using a plurality of controllers
    • G06F11/2076Synchronous techniques
    • 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/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • 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]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • 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/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • 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/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/314In storage network, e.g. network attached cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express

Abstract

본 발명의 실시 예는 기록 요청 처리 방법, 프로세서, 그리고 컴퓨터를 제공한다. 제1 컴퓨터는 제2 컴퓨터에 연결되고, 각각의 운영 체제가 제1 컴퓨터 및 제2 컴퓨터에서 각각 실행되며, 제1 컴퓨터는 제1 프로세서를 포함하고, 제1 프로세서는 시스템 버스를 이용하여 제2 컴퓨터의 제2 프로세서에 연결되며, 제1 컴퓨터는 제1 메모리 어드레스 공간을 포함하고, 제2 컴퓨터의 제2 메모리 어드레스 공간은 제1 메모리 어드레스 공간의 미러 어드레스 공간이고, 제1 프로세서는 제1 메모리 어드레스 공간에 기록된 데이터를 시스템 버스를 이용하여 제2 메모리 어드레스 공간에 미러링함으로써, 미러링 작동 지연을 감소시키고, 시스템의 IOPS 성능을 향상시킬 수 있다.

Description

기록 요청 처리 방법, 프로세서, 그리고 컴퓨터{WRITE REQUEST PROCESSING METHOD, PROCESSOR, AND COMPUTER}
본 발명의 실시 예들은 컴퓨터 분야에 관한 것으로, 더욱 상세하게 말하자면, 기록(write) 요청 처리 방법, 프로세서, 그리고 컴퓨터에 관한 것이다.
클러스터 컴퓨터 시스템은 일반적으로 다수의 컴퓨터로 구성되며, 각각의 운영 체제는 다수의 컴퓨터상에서 각각 실행되며, 다수의 컴퓨터가 독립적으로 작동할 수 있다. 다수의 컴퓨터는 이더넷(Ethernet) 버스, PCI 익스프레스(Peripheral Component Interconnect Express, PCIe) 버스 또는 인피니밴드(Infiniband) 버스와 같은 입/출력(Input Output, IO) 버스를 이용하여 상호 연결되어, 컴퓨터간의 통신과 데이터 교환을 구현할 수 있다.
클러스터 컴퓨터 시스템은 하이-앤드(high-end) 저장(storage) 분야에서 널리 사용된다. 예를 들어, 각 하이-앤드 저장 장치(storage device)의 경우, 이중 컨트롤러(dual-controller) 또는 다중(multi) 컨트롤러 저장 영역 네트워크(Storage Area Network, SAN) 시스템이 일반적으로 사용되며, 이중 컨트롤러 또는 다중 컨트롤러 SAN 시스템의 각 컨트롤러는 독립적인 컴퓨터로 볼 수 있다. 각각의 운영 체제는 각 컨트롤러 상에서 실행되며, 각각의 메모리는 각 컨트롤러에 배치된다. 컨트롤러는 IO 버스를 이용하여 상호 연결되어 클러스터 컴퓨터 시스템을 형성한다. 하이-앤드 저장 장치에 사용되는 이중 컨트롤러 또는 다중 컨트롤러 SAN 시스템은 데이터 저장 신뢰성(storage reliability)을 보장한다. 다음에, 도 1을 참조하여, PCIe 상호 연결을 토대로 한 이중 컨트롤러 SAN 시스템을 하나의 예로 이용하여, 상세한 설명을 제공한다.
도 1에 도시된 바와 같이, 이중 컨트롤러 SAN 시스템은 컨트롤러 A 및 컨트롤러 B를 포함하며, 컨트롤러 A 및 컨트롤러 B는 모두 CPU, DDR 및 프런트-앤드드(front-end) 버스를 포함하고, 각각의 운영 체제는 컨트롤러 A 및 컨트롤러 B 상에서 각각 실행된다. 컨트롤러 A는 PCIe 버스를 이용하여 컨트롤러 B에 연결되며, 도메인 어드레스 변환 및 데이터 교환은 PCIe 비-트랜스패런트 브리지(Non-Transparent Bridge, NTB)를 이용하여 두 컴퓨터 사이에 구현된다.
컨트롤러 A가 프런트-앤드 버스를 이용하여 데이터 저장을 위해 사용된 외부 기록 요청(external write request)(기록 IO 또는 기록 IO 요청이라고도 함)을 수신하는 경우, 컨트롤러 A의 CPU 0은 먼저 데이터를 DDR 0에 기록(write)한다. 그 다음에, CPU 0은 DDR 0으로부터 데이터를 판독하고, 데이터를 PCIe 포맷을 만족하는 데이터로 캡슐화하고, 캡슐화에 의해 획득된 데이터를, 2개의 컨트롤러 사이의 PCIe 버스를 이용하여 형성된 미러 채널을 이용하여 컨트롤러 B에 전달한다. 컨트롤러 B의 CPU 1은 디캡슐레이션(decapsulation)에 의해 데이터를 획득한 다음 데이터를 DDR 1에 기록한다.
이상은 듀얼 컨트롤러 SAN 시스템의 전체 미러링 작동 프로세스(mirroring operation process)이다. 이러한 미러링 작동은 컨트롤러 B에서 컨트롤러 A의 데이터를 백업하는 것과 동일하다. 컨트롤러 A에서 치명적인 오류가 발생하고 고장(breakdown)이 발생하는 경우, 컨트롤러 B는 여전히 정상적으로 작동할 수 있고, 컨트롤러 A의 메모리의 데이터가 컨트롤러 A의 고장에 의해 손실되는 것이 회피된다. 이 경우, 전체 시스템이 계속 실행되어 정상적으로 작동하므로, 저장 장치의 안정성이 향상된다. 그러나 전술한 미러링 프로세스로부터, 전체 미러링 작동 동안, 직접 메모리 액세스(Directional Memory Access, DMA) 작동이 두 번(처음에 DDR 0으로부터 데이터를 판독하는 것, 두 번째로 데이터를 DDR1에 기록하는 것) 수행되어야 한다는 것을 알 수 있다.
또한, PCIe(이더넷, 인피니밴드 등) 네트워크 프로토콜 하에서 상호 접속된 장치들 사이의 IO 액세스는, 대량의 소프트웨어 프로토콜 오버헤드(예를 들어, 데이터 캡슐화 및 디캡슐화)를 초래하여, 높은 미러링 작동 지연(latency)과 비교적 낮은 시스템의 초당 입력/출력 작동(Input/Output Operations Per Second, IOPS) 성능을 유발시킨다.
본 발명의 실시 예는 클러스터 컴퓨터 시스템에서 데이터 미러링 작동 지연을 줄이고 시스템의 IOPS를 향상시킬 수 있는, 기록 요청 처리 방법 및 장치, 그리고 컴퓨터를 제공한다.
제1 측면에 따르면, 제1 컴퓨터에 적용되는 기록 요청(write request) 처리 방법이 제공되며, 상기 제1 컴퓨터가 제2 컴퓨터에 연결되고, 각각의 운영 체제가 상기 제1 컴퓨터 및 상기 제2 컴퓨터에서 각각 실행되며, 상기 제1 컴퓨터는 제1 프로세서를 포함하고, 상기 제2 컴퓨터는 제2 프로세서를 포함하며, 상기 제1 프로세서와 상기 제2 프로세서는 시스템 버스 인터페이스를 포함하고, 상기 제1 프로세서의 시스템 버스 인터페이스는 시스템 버스를 이용하여 상기 제2 프로세서의 시스템 버스 인터페이스에 연결되며, 상기 제2 컴퓨터의 제2 메모리 어드레스 공간(space)은 상기 제1 컴퓨터의 제1 메모리 어드레스 공간의 미러(mirror) 어드레스 공간이고, 상기 기록 요청 처리 방법은, 상기 제1 프로세서가, 기록 요청을 수신하는 단계 - 상기 기록 요청은 기록될 타깃(target) 데이터 및 상기 타깃 데이터의 기록 어드레스를 포함함 -; 상기 제1 프로세서가, 상기 기록 어드레스가 상기 제1 메모리 어드레스 공간에 위치하는 것으로 결정하는 단계; 및 상기 제1 프로세서가, 상기 기록 요청의 타깃 데이터를 상기 제1 메모리 어드레스 공간에 기록하고, 상기 제2 프로세서가 상기 타깃 데이터를 상기 제2 메모리 어드레스 공간에 기록하도록, 상기 시스템 버스를 이용하여 상기 기록 요청의 타깃 데이터를 상기 제2 프로세서로 전달하는 단계를 포함한다.
2개의 상이한 컴퓨터의 프로세서들이 시스템 버스를 이용하여 함께 연결된다. 시스템 버스는, 종래 기술에서와 같은 다수 DMA 작동을 요구하지 않고, 또는 복잡한 프로토콜 기반 변환 없이, 기록될 데이터의 미러링 작동을 구현하는데 사용되며, 이는 미러링 작동 지연을 감소시키고 시스템의 IOPS 성능을 향상시킨다.
제1 측면을 참조하여 제1 측면의 구현 방식에서, 상기 시스템 버스를 이용하여 상기 기록 요청의 타깃 데이터를 상기 제2 프로세서로 전달하는 단계는, 상기 제1 프로세서가, 상기 기록 요청에 따라 미러 패킷을 생성하는 단계 - 상기 미러 패킷은 상기 타깃 데이터 및 상기 기록 어드레스를 포함함 -; 상기 제1 프로세서가, 상기 미러 패킷을 상기 제1 프로세서의 비-트랜스패런트 브리지(non-transparent bridge)로 전달하는 단계; 상기 제1 프로세서의 비-트랜스패런트 브리지가, 상기 제1 메모리 어드레스 공간과 상기 제2 메모리 어드레스 공간 사이의 미러 관계에 따라, 상기 미러 패킷의 상기 기록 어드레스를 상기 제2 메모리 어드레스 공간에서의 상기 기록 어드레스의 미러 어드레스로 변환하여 업데이트된 미러 패킷을 획득하는 단계; 및 상기 제2 프로세서가 상기 제2 프로세서의 비-트랜스패런트 브리지에 의해 수신된 상기 업데이트된 미러 패킷에 따라 상기 타깃 데이터를 상기 미러 어드레스에 기록하도록, 상기 제1 프로세서의 비-트랜스패런트 브리지가, 상기 시스템 버스를 이용하여 상기 업데이트된 미러 패킷을 상기 제2 프로세서의 비-트랜스패런트 브리지로 전달하는 단계를 포함한다.
비-트랜스패런트 브리지가 미러 패킷의 어드레스를 변환하는 데 사용되며, 이는 프로세서 내부의 내부 구성 요소의 구현을 간단화하고, 미러링 작동 지연을 감소시키며, 시스템의 IOPS 성능을 향상시킬 수 있다.
제1 측면 또는 제1 측면의 전술한 구현 방식 중 임의 하나를 참조하여 제1 측면의 다른 구현 방식에서, 상기 기록 요청 방법은, 상기 제1 프로세서의 비-트랜스패런트 브리지가 미리 설정된 시간 내에 상기 제2 프로세서로부터 미러 완료(completion) 패킷을 수신한 후에, 상기 제1 프로세서의 비-트랜스패런트 브리지가 상기 미러 완료 패킷을 상기 제1 프로세서에 전달하는 단계; 및 상기 제1 프로세서가, 상기 미러 완료 패킷에 따라 상기 타깃 데이터에 대한 미러링(mirroring) 작동(operation)의 성공을 확인하고, 상기 미러링 작동에 대응하는 미러 트랜잭션(transaction)을 종료하는 단계를 더 포함하며, 상기 미러 완료 패킷은 상기 미러 패킷에 대응하고, 상기 타깃 데이터가 상기 미러 어드레스에 기록되었음을 지시하는 데 사용된다.
제1 측면 또는 제1 측면의 전술한 구현 방식 중 임의 하나를 참조하여 제1 측면의 다른 구현 방식에서, 상기 기록 요청 방법은, 상기 제1 프로세서의 비-트랜스패런트 브리지가 상기 미리 설정된 시간 내에 상기 제2 프로세서로부터 상기 미러 완료 패킷을 수신하지 않은 경우, 상기 제1 프로세서의 비-트랜스패런트 브리지가, 미러 타임아웃(timeout) 패킷을 상기 제1 프로세서에 전달하는 단계; 및 상기 제1 프로세서가, 상기 미러 타임아웃 패킷에 따라 상기 미러링 작동의 실패를 확인하고, 상기 미러 트랜잭션을 종료하는 단계를 더 포함한다.
미러링 작동의 성공 또는 실패에 관계없이 미러 트랜잭션이 종료될 수 있도록, 미러 트랜잭션 또는 미러 관련 패킷을 처리하는 완전한 절차가 설계되어, 시스템 버스 상의 작동 중에 오류로 인한 고장의 문제를 피할 수 있으며, 시스템 견고성(robustness)을 향상시킨다.
제1 측면 또는 제1 측면의 전술한 구현 방식 중 임의 하나를 참조하여 제1 측면의 다른 구현 방식에서, 상기 시스템 버스를 이용하여 상기 기록 요청의 타깃 데이터를 상기 제2 프로세서로 전달하는 단계는, 상기 제1 프로세서가, 상기 기록 요청에 따라 미러 패킷을 생성하는 단계 - 상기 미러 패킷은 상기 타깃 데이터 및 상기 기록 어드레스를 포함함 -; 및 상기 제1 프로세서가, 상기 미러 패킷을 상기 제1 프로세서의 비-트랜스패런트 브리지로 전달하는 단계를 더 포함하고, 상기 제2 프로세서의 비-트랜스패런트 브리지가 상기 미러 패킷의 기록 어드레스를 상기 제2 메모리 어드레스 공간에서의 상기 기록 어드레스의 미러 어드레스로 변환하여 업데이트된 미러 패킷을 획득하고, 상기 제2 프로세서는 상기 업데이트된 미러 패킷에 따라 타깃 데이터를 상기 미러 어드레스에 기록하도록, 상기 제1 프로세서의 비-트랜스패런트 브리지가 상기 시스템 버스를 이용하여 상기 미러 패킷을 상기 제2 프로세서의 비-트랜스패런트 브리지로 전달한다.
비-트랜스패런트 브리지가 미러 패킷과 미러 패킷의 어드레스를 변환하는 데 사용되며, 이는 프로세서 내부 구현을 간단화하고, 미러링 작동 지연을 감소시키며, 시스템의 IOPS 성능을 향상시킬 수 있다.
제1 측면 또는 제1 측면의 전술한 구현 방식 중 임의 하나를 참조하여 제1 측면의 다른 구현 방식에서, 상기 제1 프로세서가, 상기 기록 요청의 타깃 데이터를 상기 제1 메모리 어드레스 공간에 기록하는 것은, 상기 제1 프로세서가, 상기 기록 요청에 따라 상기 타깃 데이터에 대한 기록 패킷을 생성하는 단계; 및 상기 제1 프로세서가, 상기 기록 패킷에 따라 상기 타깃 데이터를 상기 제1 메모리 어드레스 공간의 상기 기록 어드레스에 기록하는 단계를 포함한다.
제1 측면 또는 제1 측면의 전술한 구현 방식 중 임의 하나를 참조하여 제1 측면의 다른 구현 방식에서, 상기 시스템 버스는 QPI 버스 또는 HT 버스이다.
제1 측면 또는 제1 측면의 전술한 구현 방식 중 임의 하나를 참조하여 제1 측면의 다른 구현 방식에서, 상기 제2 컴퓨터의 제2 메모리 어드레스 공간은 상기 제1 컴퓨터의 제1 메모리 어드레스 공간의 미러 어드레스 공간이다.
제1 측면 또는 제1 측면의 전술한 구현 방식 중 임의 하나를 참조하여 제1 측면의 다른 구현 방식에서, 상기 제2 프로세서가 상기 타깃 데이터를 상기 제2 메모리 어드레스 공간에 기록하도록, 상기 제1 프로세서는 상기 시스템 버스를 이용하여 상기 기록 요청의 타깃 데이터를 상기 제2 프로세서에 전달한다.
제2 측면에 따르면, 제1 컴퓨터에 연결된 제2 컴퓨터에 적용되는 기록 요청 처리 방법이 제공되며, 각각의 운영 체제가 상기 제1 컴퓨터 및 상기 제2 컴퓨터에서 각각 실행되며, 상기 제1 컴퓨터는 제1 프로세서를 포함하고, 상기 제2 컴퓨터는 제2 프로세서를 포함하며, 상기 제1 프로세서와 상기 제2 프로세서는 시스템 버스 인터페이스를 포함하고, 상기 제1 프로세서의 시스템 버스 인터페이스는 시스템 버스를 이용하여 상기 제2 프로세서의 시스템 버스 인터페이스에 연결되며, 상기 제2 컴퓨터의 제2 메모리 어드레스 공간은 상기 제1 컴퓨터의 제1 메모리 어드레스 공간의 미러 어드레스 공간이고, 상기 기록 요청 처리 방법은, 상기 제2 프로세서가, 상기 시스템 버스를 이용하여 상기 제1 프로세서로부터 타깃 데이터를 수신하는 단계; 및 상기 제2 프로세서가, 상기 타깃 데이터를 상기 제2 메모리 어드레스 공간에 기록하는 단계를 포함하고, 상기 타깃 데이터는 상기 제1 프로세서의 메모리에 기록될 데이터이고, 상기 타깃 데이터의 기록 어드레스는 상기 제1 메모리 어드레스 공간에 위치된다.
2개의 상이한 컴퓨터의 프로세서들이 시스템 버스를 이용하여 함께 연결된다. 시스템 버스는, 종래 기술에서와 같은 다수 DMA 작동을 요구하지 않고, 또는 복잡한 프로토콜 기반 변환 없이, 기록될 데이터의 미러링 작동을 구현하는데 사용되며, 이는 미러링 작동 지연을 감소시키고 시스템의 IOPS 성능을 향상시킨다.
제2 측면을 참조하여 제2 측면의 구현 방식에서, 상기 제2 프로세서가, 상기 시스템 버스를 이용하여 상기 제1 프로세서로부터 타깃 데이터를 수신하는 단계는, 상기 제2 프로세서의 비-트랜스패런트 브리지가, 상기 시스템 버스를 이용하여 상기 제1 프로세서로부터 미러 패킷을 수신하는 단계를 포함하고, 상기 미러 패킷은 상기 타깃 데이터 및 상기 제2 메모리 어드레스 공간에서의 상기 기록 어드레스의 미러 어드레스를 포함하며, 상기 제2 프로세서가, 상기 타깃 데이터를 상기 제2 메모리 어드레스 공간에 기록하는 단계는, 상기 제2 프로세서의 비-트랜스패런트 브리지가, 상기 미러 패킷을 상기 타깃 데이터에 대한 기록 패킷으로 변환하는 단계; 및 상기 제2 프로세서의 비-트랜스패런트 브리지가, 상기 제2 컴퓨터의 메모리 컨트롤러를 이용하여 상기 기록 패킷을 상기 제2 메모리 어드레스 공간의 상기 미러 어드레스에 기록하는 단계를 포함한다.
비-트랜스패런트 브리지가 패킷 유형과 포맷 변환을 완료하는 데 사용되며, 이는 프로세서 내부 구현을 간단화하고, 미러링 작동 지연을 감소시키며, 시스템의 IOPS 성능을 향상시킬 수 있다.
제2 측면 또는 제2 측면의 전술한 구현 방식 중 임의 하나를 참조하여 제2 측면의 다른 구현 방식에서, 상기 기록 요청 처리 방법은, 상기 제2 프로세서의 비-트랜스패런트 브리지가, 상기 메모리 컨트롤러로부터 상기 기록 패킷에 대응하는 기록 완료 패킷을 수신하는 단계 - 상기 기록 완료 패킷은 상기 미러 어드레스를 포함함 -; 상기 제2 프로세서의 비-트랜스패런트 브리지가, 상기 제1 메모리 어드레스 공간과 상기 제2 메모리 어드레스 공간 사이의 매핑 관계에 따라 상기 미러 어드레스를 상기 기록 어드레스로 변환하는 단계; 및 상기 제2 프로세서의 비-트랜스패런트 브리지가, 상기 미러 패킷에 대응하는 미러 완료 패킷을 상기 제1 프로세서로 전달하는 단계를 더 포함하고, 상기 미러 완료 패킷은 상기 기록 어드레스를 포함하고, 상기 미러 완료 패킷은 상기 타깃 데이터가 상기 미러 어드레스에 기록되었음을 지시하는 데 사용된다.
제2 측면 또는 제2 측면의 전술한 구현 방식 중 임의 하나를 참조하여 제2 측면의 다른 구현 방식에서, 상기 제2 프로세서가, 상기 시스템 버스를 이용하여 상기 제1 프로세서로부터 타깃 데이터를 수신하는 단계는, 상기 제2 프로세서의 비-트랜스패런트 브리지가, 상기 시스템 버스를 이용하여 상기 제1 프로세서로부터 미러 패킷을 수신하는 단계를 포함하고, 상기 미러 패킷은 상기 타깃 데이터 및 상기 기록 어드레스를 포함하며, 상기 제2 프로세서가, 상기 타깃 데이터를 상기 제2 메모리 어드레스 공간에 기록하는 단계는, 상기 제2 프로세서의 비-트랜스패런트 브리지가, 상기 미러 패킷을 상기 타깃 데이터에 대한 기록 패킷으로 변환하고, 상기 기록 어드레스를 상기 제2 메모리 어드레스 공간에서의 상기 기록 어드레스의 미러 어드레스로 변환하는 단계; 및 상기 제2 프로세서의 비-트랜스패런트 브리지가, 상기 제2 컴퓨터의 메모리 컨트롤러를 이용하여 상기 기록 패킷을 상기 제2 메모리 어드레스 공간의 상기 미러 어드레스에 기록하는 단계를 포함한다.
제2 측면 또는 제2 측면의 전술한 구현 방식 중 임의 하나를 참조하여 제2 측면의 다른 구현 방식에서, 상기 시스템 버스는 QPI 버스 또는 HT 버스이다.
제3 측면에 따르면, 프로세서가 제공되며, 상기 프로세서가 제1 컴퓨터에 위치되며, 상기 제1 컴퓨터가 제2 컴퓨터에 연결되고, 각각의 운영 체제가 상기 제1 컴퓨터 및 상기 제2 컴퓨터에서 각각 실행되며, 상기 제2 컴퓨터는 다른 프로세서를 포함하며, 상기 프로세서와 상기 다른 프로세서는 시스템 버스 인터페이스를 포함하고, 상기 프로세서의 시스템 버스 인터페이스는 시스템 버스를 이용하여 상기 다른 프로세서의 시스템 버스 인터페이스에 연결되며, 상기 제2 컴퓨터의 제2 메모리 어드레스 공간은 상기 제1 컴퓨터의 제1 메모리 어드레스 공간의 미러 어드레스 공간이고, 상기 프로세서는, 컨트롤러; 및 내부 버스를 더 포함하며, 상기 컨트롤러는 상기 내부 버스를 이용하여 상기 프로세서의 상기 시스템 버스 인터페이스에 연결되며, 상기 컨트롤러는, 기록될 타깃 데이터와 상기 타깃 데이터의 기록 어드레스를 포함하는 기록 요청을 수신하고; 상기 기록 어드레스가 상기 제1 메모리 어드레스 공간에 위치하는 것으로 결정하며; 그리고 상기 기록 요청의 타깃 데이터를 상기 제1 메모리 어드레스 공간에 기록하고, 상기 시스템 버스를 이용하여 상기 기록 요청의 타깃 데이터를 상기 다른 프로세서로 전달하도록 구성된다.
2개의 상이한 컴퓨터의 프로세서들이 시스템 버스를 이용하여 함께 연결된다. 시스템 버스는, 종래 기술에서와 같은 다수 DMA 작동을 요구하지 않고, 또는 복잡한 프로토콜 기반 변환 없이, 기록될 데이터의 미러링 작동을 구현하는데 사용되며, 이는 미러링 작동 지연을 감소시키고 시스템의 IOPS 성능을 향상시킨다.
제3 측면을 참조하여 제3 측면의 구현 방식에서, 상기 프로세서는, 비-트랜스패런트 브리지를 더 포함하고, 상기 비-트랜스패런트 브리지가 상기 시스템 버스 인터페이스에 연결되고, 상기 비-트랜스패런트 브리지는 상기 내부 버스를 이용하여 상기 컨트롤러에 연결되며, 상기 컨트롤러는, 구체적으로, 상기 기록 요청에 따라 미러 패킷을 생성하도록 구성되며, 상기 미러 패킷은 상기 타깃 데이터 및 상기 기록 어드레스를 포함하고, 상기 비-트랜스패런트 브리지가, 상기 제1 메모리 어드레스 공간과 상기 제2 메모리 어드레스 공간 사이의 미러 관계에 따라, 상기 미러 패킷의 상기 기록 어드레스를 상기 제2 메모리 어드레스 공간에서의 상기 기록 어드레스의 미러 어드레스로 변환하여 업데이트된 미러 패킷을 획득하고; 그리고 상기 다른 프로세스가 상기 다른 프로세서의 비트랜스패턴트 브리지에 의해 수신된 상기 업데이트된 미러 패킷에 따라 상기 타깃 데이터를 상기 미러 어드레스에 기록하도록, 상기 시스템 버스를 이용하여 상기 업데이트된 미러 패킷을 상기 다른 프로세서의 비-트랜스패런트 브리지로 전달하도록 구성된다.
비-트랜스패런트 브리지가 미러 패킷의 어드레스를 변환하는 데 사용되며, 이는 프로세서 내부 구현을 간단화하고, 미러링 작동 지연을 감소시키며, 시스템의 IOPS 성능을 향상시킬 수 있다.
제3 측면 또는 제3 측면의 전술한 구현 방식 중 임의 하나를 참조하여 제3 측면의 다른 구현 방식에서, 상기 비-트랜스패런트 브리지는, 추가로, 미리 설정된 시간 내에 상기 다른 프로세서로부터 미러 완료 패킷을 수신한 후에, 상기 미러 완료 패킷을 상기 컨트롤러로 전달하도록 구성되며, 상기 미러 완료 패킷은 상기 미러 패킷에 대응하고, 상기 타깃 데이터가 상기 미러 어드레스에 기록되었음을 지시하는 데 사용되고, 상기 컨트롤러는, 추가로, 상기 미러 완료 패킷에 따라 상기 타깃 데이터에 대한 미러링 작동의 성공을 확인하고, 상기 미러링 작동에 대응하는 미러 트랜잭션을 종료하도록 구성된다.
제3 측면 또는 제3 측면의 전술한 구현 방식 중 임의 하나를 참조하여 제3 측면의 다른 구현 방식에서, 상기 비-트랜스패런트 브리지는, 추가로, 상기 미러 완료 패킷이 상기 미리 설정된 시간 내에 상기 다른 프로세서로부터 수신되지 않은 경우, 미러 타임아웃 패킷을 상기 컨트롤러로 전달하도록 구성되고, 상기 컨트롤러가, 추가로, 상기 미러 타임아웃 패킷에 따라 상기 미러링 작동의 실패를 확인하고, 상기 미러 트랜잭션을 종료하도록 구성된다.
미러링 작동의 성공 또는 실패에 관계없이 미러 트랜잭션이 종료될 수 있도록, 미러 트랜잭션 또는 미러 관련 패킷을 처리하는 완전한 절차가 설계되어, 시스템 버스 상의 작동 중에 오류로 인한 고장의 문제를 피할 수 있으며, 시스템 견고성을 향상시킨다.
제3 측면 또는 제3 측면의 전술한 구현 방식 중 임의 하나를 참조하여 제3 측면의 다른 구현 방식에서, 상기 컨트롤러는, 구체적으로, 상기 기록 요청에 따라, 상기 타깃 데이터 및 상기 기록 어드레스를 포함하는 미러 패킷을 생성하고; 그리고 상기 미러 패킷을 상기 프로세서의 비-트랜스패런트 브리지로 전달하도록 구성되며, 상기 프로세서의 비-트랜스패런트 브리지는, 상기 다른 프로세서의 비-트랜스패런트 브리지가 상기 미러 패킷의 기록 어드레스를 상기 제2 메모리 어드레스 공간에서의 상기 기록 어드레스의 미러 어드레스로 변환하여 업데이트된 미러 패킷을 획득하고, 상기 다른 프로세서는 상기 업데이트된 미러 패킷에 따라 상기 타깃 데이터를 상기 미러 어드레스에 기록하도록, 상기 시스템 버스를 이용하여 상기 미러 패킷을 상기 다른 프로세서의 비-트랜스패런트 브리지로 전달한다.
비-트랜스패런트 브리지가 미러 패킷과 미러 패킷의 어드레스를 변환하는 데 사용되며, 이는 프로세서 내부 구현을 간단화하고, 미러링 작동 지연을 감소시키며, 시스템의 IOPS 성능을 향상시킬 수 있다.
제3 측면 또는 제3 측면의 전술한 구현 방식 중 임의 하나를 참조하여 제3 측면의 다른 구현 방식에서, 상기 컨트롤러가, 구체적으로, 상기 기록 요청에 따라 상기 타깃 데이터에 대한 기록 패킷을 생성하고; 그리고 상기 기록 패킷에 따라 상기 타깃 데이터를 상기 제1 메모리 어드레스 공간의 상기 기록 어드레스에 기록하도록 구성된다.
제3 측면 또는 제3 측면의 전술한 구현 방식 중 임의 하나를 참조하여 제3 측면의 다른 구현 방식에서, 상기 시스템 버스는 QPI 버스 또는 HT 버스이다.
제3 측면 또는 제3 측면의 전술한 구현 방식 중 임의 하나를 참조하여 제3 측면의 다른 구현 방식에서, 상기 제2 컴퓨터의 제2 메모리 어드레스 공간은 상기 제1 컴퓨터의 제1 메모리 어드레스 공간의 미러 어드레스 공간이다.
제3 측면 또는 제3 측면의 전술한 구현 방식 중 임의 하나를 참조하여 제3 측면의 다른 구현 방식에서, 상기 다른 프로세서가 상기 타깃 데이터를 상기 제2 메모리 어드레스 공간에 기록하도록, 상기 프로세서는 상기 시스템 버스를 이용하여 상기 기록 요청의 타깃 데이터를 상기 다른 프로세서에 전달한다.
제4 측면에 따르면, 프로세서가 제공되며, 상기 프로세서는 제1 컴퓨터에 연결된 제2 컴퓨터에 위치되고, 각각의 운영 체제가 상기 제1 컴퓨터 및 상기 제2 컴퓨터에서 각각 실행되며, 상기 제1 컴퓨터는 다른 프로세서를 포함하고, 상기 다른 프로세서와 상기 프로세서는 시스템 버스 인터페이스를 포함하고, 상기 다른 프로세서의 시스템 버스 인터페이스는 시스템 버스를 이용하여 상기 프로세서의 시스템 버스 인터페이스에 연결되며, 상기 제2 컴퓨터의 제2 메모리 어드레스 공간은 상기 제1 컴퓨터의 제1 메모리 어드레스 공간의 미러 어드레스 공간이고, 상기 프로세서는, 컨트롤러; 비-트랜스패런트 브리지; 및 내부 버스를 포함하고, 상기 비-트랜스패런트 브리지는 상기 프로세서의 상기 시스템 버스 인터페이스에 연결되고, 상기 컨트롤러는 상기 내부 버스를 이용하여 상기 비-트랜스패런트 브리지에 연결되며, 상기 비-트랜스패런트 브리지는, 상기 시스템 버스를 이용하여 상기 다른 프로세서로부터 타깃 데이터를 수신하고, 상기 타깃 데이터를 상기 제2 메모리 어드레스 공간에 기록하도록 구성되며, 상기 타깃 데이터는 상기 다른 프로세서의 메모리에 기록될 데이터이고, 상기 타깃 데이터의 기록 어드레스는 상기 제1 메모리 어드레스 공간에 위치된다.
2개의 상이한 컴퓨터의 프로세서들이 시스템 버스를 이용하여 함께 연결된다. 시스템 버스는, 종래 기술에서와 같은 다수 DMA 작동을 요구하지 않고, 또는 복잡한 프로토콜 기반 변환 없이, 기록될 데이터의 미러링 작동을 구현하는데 사용되며, 이는 미러링 작동 지연을 감소시키고 시스템의 IOPS 성능을 향상시킨다.
제4 측면을 참조하여 제4 측면의 구현 방식에서, 상기 비-트랜스패런트 브리지는, 구체적으로, 상기 시스템 버스를 이용하여 상기 다른 프로세서로부터, 상기 타깃 데이터 및 상기 제2 메모리 어드레스 공간에서의 상기 기록 어드레스의 미러 어드레스를 포함하는 미러 패킷을 수신하고; 상기 미러 패킷을 상기 타깃 데이터에 대한 기록 패킷으로 변환하고; 그리고 상기 제2 컴퓨터의 메모리 컨트롤러를 이용하여 상기 기록 패킷을 상기 제2 메모리 어드레스 공간의 상기 미러 어드레스에 기록하도록 구성된다.
비-트랜스패런트 브리지가 패킷 유형 또는 포맷 변환을 완료하는 데 사용되며, 이는 프로세서 내부 구현을 간단화하고, 미러링 작동 지연을 감소시키며, 시스템의 IOPS 성능을 향상시킬 수 있다.
제4 측면 또는 제4 측면의 전술한 구현 방식 중 임의 하나를 참조하여 제4 측면의 다른 구현 방식에서, 상기 비-트랜스패런트 브리지는, 추가로, 상기 메모리 컨트롤러로부터, 상기 기록 패킷에 대응하며, 상기 미러 어드레스를 포함하는 기록 완료 패킷을 수신하고; 상기 제1 메모리 어드레스 공간과 상기 제2 메모리 어드레스 공간 사이의 매핑 관계에 따라 상기 미러 어드레스를 상기 기록 어드레스로 변환하며; 그리고 상기 미러 패킷에 대응하는 미러 완료 패킷을 상기 다른 프로세서로 전달하도록 구성되며, 상기 미러 완료 패킷은 상기 기록 어드레스를 포함하고, 상기 미러 완료 패킷은 상기 타깃 데이터가 상기 미러 어드레스에 기록되었음을 지시하는 데 사용된다.
제4 측면 또는 제4 측면의 전술한 구현 방식 중 임의 하나를 참조하여 제4 측면의 다른 구현 방식에서, 상기 비-트랜스패런트 브리지는, 구체적으로, 상기 시스템 버스를 이용하여 상기 다른 프로세서로부터, 상기 타깃 데이터 및 상기 기록 어드레스를 포함하는 미러 패킷을 수신하고; 상기 미러 패킷을 상기 타깃 데이터에 대한 기록 패킷으로 변환하고, 상기 기록 어드레스를 상기 제2 메모리 어드레스 공간에서의 상기 기록 어드레스의 미러 어드레스로 변환하며; 그리고 상기 제2 컴퓨터의 메모리 컨트롤러를 이용하여 상기 기록 패킷을 상기 제2 메모리 어드레스 공간의 상기 미러 어드레스에 기록하도록 구성된다.
제4 측면 또는 제4 측면의 전술한 구현 방식 중 임의 하나를 참조하여 제4 측면의 다른 구현 방식에서, 상기 시스템 버스는 QPI 버스 또는 HT 버스이다.
제5 측면에 따르면, 컴퓨터가 제공되며, 상기 컴퓨터가 다른 컴퓨터에 연결되고, 각각의 운영 체제가 상기 컴퓨터 및 상기 다른 컴퓨터에서 각각 실행되며, 상기 컴퓨터는 제1 프로세서를 포함하고, 상기 다른 컴퓨터는 제2 프로세서를 포함하며, 상기 제1 프로세서와 상기 제2 프로세서는 시스템 버스 인터페이스를 포함하고, 상기 제1 프로세서의 시스템 버스 인터페이스는 시스템 버스를 이용하여 상기 제2 프로세서의 시스템 버스 인터페이스에 연결되며, 상기 다른 컴퓨터의 제2 메모리 어드레스 공간은 상기 컴퓨터의 제1 메모리 어드레스 공간의 미러 어드레스 공간이고, 상기 컴퓨터는, 기록될 타깃 데이터 및 상기 타깃 데이터의 기록 어드레스를 포함하는 기록 요청을 수신하도록 구성된, 수신 모듈; 상기 기록 어드레스가 상기 제1 메모리 어드레스 공간에 위치하는 것으로 결정하도록 구성된, 결정 모듈; 및 상기 기록 요청의 타깃 데이터를 상기 제1 메모리 어드레스 공간에 기록하고, 상기 제2 프로세서가 상기 타깃 데이터를 상기 제2 메모리 어드레스 공간에 기록하도록, 상기 시스템 버스를 이용하여 상기 기록 요청의 타깃 데이터를 상기 제2 프로세서로 전달하도록 구성된, 미러링 모듈을 포함한다.
2개의 상이한 컴퓨터의 프로세서들이 시스템 버스를 이용하여 함께 연결된다. 시스템 버스는, 종래 기술에서와 같은 다수 DMA 작동을 요구하지 않고, 또는 복잡한 프로토콜 기반 변환 없이, 기록될 데이터의 미러링 작동을 구현하는데 사용되며, 이는 미러링 작동 지연을 감소시키고 시스템의 IOPS 성능을 향상시킨다.
제5 측면을 참조하여 제5 측면의 구현 방식에서, 상기 미러링 모듈은, 구체적으로, 상기 기록 요청에 따라, 상기 타깃 데이터 및 상기 기록 어드레스를 포함하는 미러 패킷을 생성하고; 상기 미러 패킷을 상기 제1 프로세서의 비-트랜스패런트 브리지로 전달하며; 상기 제1 메모리 어드레스 공간과 상기 제2 메모리 어드레스 공간 사이의 미러 관계에 따라, 상기 미러 패킷의 상기 기록 어드레스를 상기 제2 메모리 어드레스 공간에서의 상기 기록 어드레스의 미러 어드레스로 변환하여 업데이트된 미러 패킷을 획득하고; 그리고 상기 제2 프로세스가 상기 제2 프로세서의 비트랜스패턴트 브리지에 의해 수신된 상기 업데이트된 미러 패킷에 따라 상기 타깃 데이터를 상기 미러 어드레스에 기록하도록, 상기 시스템 버스를 이용하여 상기 업데이트된 미러 패킷을 상기 제2 프로세서의 비-트랜스패런트 브리지로 전달하도록 구성된다.
비-트랜스패런트 브리지가 미러 패킷의 어드레스를 변환하는 데 사용되며, 이는 프로세서 내부 구현을 간단화하고, 미러링 작동 지연을 감소시키며, 시스템의 IOPS 성능을 향상시킬 수 있다.
제5 측면 또는 제5 측면의 전술한 구현 방식 중 임의 하나를 참조하여 제5 측면의 다른 구현 방식에서, 상기 미러링 모듈은 추가로, 상기 제1 프로세서의 비-트랜스패런트 브리지가 미리 설정된 시간 내에 상기 제2 프로세서로부터 미러 완료 패킷을 수신한 후에, 상기 미러 완료 패킷을 상기 제1 프로세서로 전달하며; 그리고 상기 미러 완료 패킷에 따라 상기 타깃 데이터에 대한 미러링 작동의 성공을 확인하고, 상기 미러링 작동에 대응하는 미러 트랜잭션을 종료하도록 구성되며, 상기 미러 완료 패킷은 상기 미러 패킷에 대응하고, 상기 타깃 데이터가 상기 미러 어드레스에 기록되었음을 지시하는 데 사용된다.
제5 측면 또는 제5 측면의 전술한 구현 방식 중 임의 하나를 참조하여 제5 측면의 다른 구현 방식에서, 상기 미러링 모듈은 추가로, 상기 제1 프로세서의 비-트랜스패런트 브리지가 상기 미리 설정된 시간 내에 상기 제2 프로세서로부터 상기 미러 완료 패킷을 수신하지 않은 경우, 미러 타임아웃 패킷을 상기 제1 프로세서로 전달하고; 그리고 상기 미러 타임아웃 패킷에 따라 상기 미러링 작동의 실패를 확인하고, 상기 미러 트랜잭션을 종료하도록 구성된다.
미러링 작동의 성공 또는 실패에 관계없이 미러 트랜잭션이 종료될 수 있도록, 미러 트랜잭션 또는 미러 관련 패킷을 처리하는 완전한 절차가 설계되어, 시스템 버스 상의 작동 중에 오류로 인한 고장의 문제를 피할 수 있으며, 시스템 견고성을 향상시킨다.
제5 측면 또는 제5 측면의 전술한 구현 방식 중 임의 하나를 참조하여 제5 측면의 다른 구현 방식에서, 상기 미러링 모듈은 추가로, 상기 기록 요청에 따라, 상기 타깃 데이터 및 상기 기록 어드레스를 포함하는 미러 패킷을 생성하고; 그리고 상기 미러 패킷을 상기 제1 프로세서의 비-트랜스패런트 브리지로 전달하도록 구성되며, 상기 제1 프로세서의 비-트랜스패런트 브리지는, 상기 제2 프로세서의 비-트랜스패런트 브리지가 상기 미러 패킷의 기록 어드레스를 상기 제2 메모리 어드레스 공간에서의 상기 기록 어드레스의 미러 어드레스로 변환하여 업데이트된 미러 패킷을 획득하고, 상기 제2 프로세서는 상기 업데이트된 미러 패킷에 따라 상기 타깃 데이터를 상기 미러 어드레스에 기록하도록, 상기 시스템 버스를 이용하여 상기 미러 패킷을 상기 제2 프로세서의 비-트랜스패런트 브리지로 전달한다.
비-트랜스패런트 브리지가 미러 패킷과 미러 패킷의 어드레스를 변환하는 데 사용되며, 이는 프로세서 내부 구현을 간단화하고, 미러링 작동 지연을 감소시키며, 시스템의 IOPS 성능을 향상시킬 수 있다.
제5 측면 또는 제5 측면의 전술한 구현 방식 중 임의 하나를 참조하여 제5 측면의 다른 구현 방식에서, 상기 미러링 모듈은 구체적으로, 상기 기록 요청에 따라 상기 타깃 데이터에 대한 기록 패킷을 생성하고; 그리고 상기 기록 패킷에 따라 상기 타깃 데이터를 상기 제1 메모리 어드레스 공간의 상기 기록 어드레스에 기록하도록 구성된다.
제5 측면 또는 제5 측면의 전술한 구현 방식 중 임의 하나를 참조하여 제5 측면의 다른 구현 방식에서, 상기 시스템 버스는 QPI 버스 또는 HT 버스이다.
제5 측면 또는 제5 측면의 전술한 구현 방식 중 임의 하나를 참조하여 제5 측면의 다른 구현 방식에서, 상기 다른 컴퓨터의 제2 메모리 어드레스 공간은 상기 컴퓨터의 제1 메모리 어드레스 공간의 미러 어드레스 공간이다.
제5 측면 또는 제5 측면의 전술한 구현 방식 중 임의 하나를 참조하여 제5 측면의 다른 구현 방식에서, 상기 제2 프로세서가 상기 타깃 데이터를 상기 제2 메모리 어드레스 공간에 기록하도록, 상기 미러링 모듈은 상기 시스템 버스를 이용하여 상기 기록 요청의 타깃 데이터를 상기 제2 프로세서에 전달한다.
제6 측면에 따르면, 컴퓨터가 제공되며, 상기 컴퓨터는 다른 컴퓨터에 연결되고, 각각의 운영 체제가 상기 다른 컴퓨터 및 상기 컴퓨터에서 각각 실행되며, 상기 다른 컴퓨터는 제1 프로세서를 포함하고, 상기 컴퓨터는 제2 프로세서를 포함하며, 상기 제1 프로세서와 상기 제2 프로세서는 시스템 버스 인터페이스를 포함하고, 상기 제1 프로세서의 시스템 버스 인터페이스는 시스템 버스를 이용하여 상기 제2 프로세서의 시스템 버스 인터페이스에 연결되며, 상기 컴퓨터의 제2 메모리 어드레스 공간은 상기 다른 컴퓨터의 제1 메모리 어드레스 공간의 미러 어드레스 공간이고, 상기 컴퓨터는, 상기 시스템 버스를 이용하여 상기 제1 프로세서로부터 타깃 데이터를 수신하도록 구성된, 미러링 모듈; 및 상기 타깃 데이터를 상기 제2 메모리 어드레스 공간에 기록하도록 구성된, 기록 작동 모듈을 포함하고, 상기 타깃 데이터는 상기 제1 프로세서의 메모리에 기록될 데이터이고, 상기 타깃 데이터의 기록 어드레스는 상기 제1 메모리 어드레스 공간에 위치된다.
2개의 상이한 컴퓨터의 프로세서들이 시스템 버스를 이용하여 함께 연결된다. 시스템 버스는, 종래 기술에서와 같은 다수 DMA 작동을 요구하지 않고, 또는 복잡한 프로토콜 기반 변환 없이, 기록될 데이터의 미러링 작동을 구현하는데 사용되며, 이는 미러링 작동 지연을 감소시키고 시스템의 IOPS 성능을 향상시킨다.
제6 측면을 참조하여 제6 측면의 구현 방식에서, 상기 미러링 모듈은, 구체적으로, 상기 시스템 버스를 이용하여 상기 제1 프로세서로부터 미러 패킷을 수신하도록 구성되고, 상기 미러 패킷은 상기 타깃 데이터 및 상기 제2 메모리 어드레스 공간에서의 상기 기록 어드레스의 미러 어드레스를 포함하며, 상기 기록 작동 모듈은, 구체적으로, 상기 미러 패킷을 상기 타깃 데이터에 대한 기록 패킷으로 변환하고, 상기 컴퓨터의 메모리 컨트롤러를 이용하여 상기 기록 패킷을 상기 제2 메모리 어드레스 공간의 상기 미러 어드레스에 기록하도록 구성된다.
비-트랜스패런트 브리지가 패킷 유형과 포맷 변환을 완료하는 데 사용되며, 이는 프로세서 내부 구현을 간단화하고, 미러링 작동 지연을 감소시키며, 시스템의 IOPS 성능을 향상시킬 수 있다.
제6 측면 또는 제6 측면의 전술한 구현 방식 중 임의 하나를 참조하여 제6 측면의 다른 구현 방식에서, 상기 미러링 모듈은 추가로, 상기 메모리 컨트롤러로부터, 상기 기록 패킷에 대응하며, 상기 미러 어드레스를 포함하는 기록 완료 패킷을 수신하고; 상기 제1 메모리 어드레스 공간과 상기 제2 메모리 어드레스 공간 사이의 매핑 관계에 따라 상기 미러 어드레스를 상기 기록 어드레스로 변환하며; 그리고 상기 미러 패킷에 대응하는 미러 완료 패킷을 상기 제1 프로세서로 전달하도록 구성되며, 상기 미러 완료 패킷은 상기 기록 어드레스를 포함하고, 상기 미러 완료 패킷은 상기 타깃 데이터가 상기 미러 어드레스에 기록되었음을 지시하는 데 사용된다.
제6 측면 또는 제6 측면의 전술한 구현 방식 중 임의 하나를 참조하여 제6 측면의 다른 구현 방식에서, 상기 미러링 모듈은, 구체적으로, 상기 시스템 버스를 이용하여 상기 제1 프로세서로부터, 상기 타깃 데이터 및 상기 기록 어드레스를 포함하는 미러 패킷을 수신하도록 구성되고, 상기 기록 작동 모듈은, 구체적으로, 상기 미러 패킷을 상기 타깃 데이터에 대한 기록 패킷으로 변환하고, 상기 기록 어드레스를 상기 제2 메모리 어드레스 공간에서의 상기 기록 어드레스의 미러 어드레스로 변환하며; 그리고 상기 제2 컴퓨터의 메모리 컨트롤러를 이용하여 상기 기록 패킷을 상기 제2 메모리 어드레스 공간의 상기 미러 어드레스에 기록하도록 구성된다.
제6 측면 또는 제6 측면의 전술한 구현 방식 중 임의 하나를 참조하여 제6 측면의 다른 구현 방식에서, 상기 시스템 버스는 QPI 버스 또는 HT 버스이다.
종래 기술에서, 시스템 버스는 일반적으로 컴퓨터 내부의 기능적 구성 요소들의 연결을 구현하는 데 사용되며, 시스템 버스는 컴퓨터의 내부 버스 중 하나이며 높은 대역폭과 낮은 지연의 특징을 갖는다. 본 발명의 실시 예에서, 시스템 버스는 2개의 상이한 컴퓨터의 프로세서들을 함께 연결하는데 사용된다. 시스템 버스는 종래 기술에서와 같은 다수 DMA 작동을 요구하지 않고, 또는 복잡한 프로토콜 기반 변환 없이, 기록될 데이터의 미러링 작동을 구현하는데 사용되며, 이는 미러링 작동 지연을 감소시키고 시스템의 IOPS 성능을 향상시킨다.
본 발명의 실시 예에서의 기술적 해결방안을 보다 명확하게 설명하기 위해, 다음에는 본 발명의 실시 예를 설명하기 위해 요구되는 첨부 도면을 간단히 설명한다. 명백하게, 다음의 설명에서의 첨부된 도면은 본 발명의 단지 일부 실시 예를 나타내며, 당업자는 창조적인 노력 없이도 이들 도면으로부터 다른 도면을 유도할 수 있다.
도 1은 기존의 클러스터 컴퓨터 시스템에서의 연결의 개략도이다.
도 2는 본 발명의 실시 예에 따른 컴퓨터 시스템에서의 연결의 개략도이다.
도 3은 본 발명의 일 실시 예에 따른 기록 요청 처리 방법의 개략적인 흐름도이다.
도 4는 QPI 기술을 토대로 한 CPU의 개략적인 구조도이다.
도 5는 본 발명의 일 실시 예에 따른 데이터 미러링 작동의 개략적인 흐름도이다.
도 6은 본 발명의 일 실시 예에 따른 데이터 미러링 작동의 개략적인 흐름도이다.
도 7은 본 발명의 실시 예에 따른 기록 요청 처리 방법의 개략적인 흐름도이다.
도 8은 본 발명의 일 실시 예에 따른 프로세서의 개략적인 구조도이다.
도 9는 본 발명의 일 실시 예에 따른 프로세서의 개략적인 구조도이다.
도 10은 본 발명의 일 실시 예에 따른 컴퓨터의 개략적인 구성도이다.
도 11은 본 발명의 일 실시 예에 따른 컴퓨터의 개략적인 구성도이다.
이하, 본 발명의 실시 예의 기술적 해결 방안을, 본 발명의 실시 예의 첨부 도면을 참조하여 명확하고 완전하게 설명한다. 명백하게, 설명된 실시 예는 본 발명의 모든 실시 예가 아닌 일부이다. 창의적인 노력 없이 본 발명의 실시 예에 기초하여 당업자에 의해 획득된 다른 모든 실시 예는 본 발명의 보호 범위 내에 있다.
클러스터 컴퓨터 시스템은 일반적으로 다수의 컴퓨터를 포함하며, 다수의 컴퓨터들은 소정의 방식으로 함께 상호연결되며, 각각의 운영 체제가 각 컴퓨터에서 독립적으로 실행되며, 컴퓨터간에 상호 통신 및 데이터 교환이 수행될 수 있다. 클러스터 컴퓨터 시스템의 데이터 저장 신뢰성을 보장하기 위해, 클러스터 컴퓨터 시스템의 컴퓨터(이하, 제1 컴퓨터라고 명명함)는 메모리에 기록되는 데이터(이하, 타깃 데이터라고 명명함)를 미러링 작동에 의해 다른 컴퓨터(이하, 제2 컴퓨터라고 명명함)의 메모리로 미러링을 하며, 이는 제1 컴퓨터의 메모리의 데이터가 제2 컴퓨터에 백업(back-up)되는 것과 동일하다. 임의 이유로 인해 제1 컴퓨터가 고장나는 경우, 제1 컴퓨터의 메모리의 데이터가 여전히 제2 컴퓨터에 백업되어 있으므로, 메모리의 데이터 손실이 발생하지 않으며, 데이터 저장 신뢰성이 향상된다.
전술한 제1 컴퓨터 및/또는 제2 컴퓨터는 프로세서 및 메모리를 포함하고 운영 체제가 독립적으로 실행되는 장치 또는 노드일 수 있다는 것을 이해해야 한다. 본 발명의 실시 예에서, 제1 컴퓨터 및/또는 제2 컴퓨터는 단지 설명의 용이함 및 구별을 위한 것이며, 본 발명의 실시 예에 대한 한정으로 이해되어서는 안된다. 구체적으로, 상이한 애플리케이션 시나리오에서, 제1 컴퓨터 및/또는 제2 컴퓨터는 상이한 장치 또는 노드에 대응할 수 있다. 예를 들어, 클러스터 컴퓨터 시스템의 일반적인 분야, 예를 들어 통신 또는 서버 분야에서, 컴퓨터는 호스트(host)일 수 있으며, 저장 장치 분야 예를 들어 이중 컨트롤러 또는 다중 컨트롤러 SAN 분야에서는, 컴퓨터가 컨트롤러일 수 있다.
클러스터 시스템의 컴퓨터는 본 명세서에서 설명을 위한 예로서 사용된다는 것을 추가로 이해해야 한다. 실제로, 본 발명의 실시 예들에서 제공되는 기록 요청 처리 방법은 2개의 독립적인 컴퓨터들 내부의 프로세서들이 시스템 버스를 이용하여 연결되는 경우에 사용될 수 있다.
종래 기술에서, 클러스터 컴퓨터 시스템의 컴퓨터는 PCIe 버스, 이더넷 버스 또는 인피니밴드(Infiniband) 버스와 같은 IO 버스를 이용하여 연결된다. 전술한 바와 같이, IO 버스를 이용하여 컴퓨터들간에 수행되는 데이터 미러링 작동은 다수 DMA 작동을 포함할 뿐만 아니라 복잡한 소프트웨어 프로토콜 오버헤드를 포함한다. 예를 들어, 제1 컴퓨터는 메모리에서 타깃 데이터를 추출하고, PCIe 프로토콜, 이더넷 프로토콜 또는 인피니밴드 프로토콜과 같은 프로토콜을 충족하는 패킷으로 타깃 데이터를 캡슐화하고, 패킷을 제2 컴퓨터로 전달해야 하며, 제2 컴퓨터는 패킷을 디캡슐화하고 제2 컴퓨터의 메모리에 타깃 데이터를 기록해야 한다. 그 결과, 미러링 작동 효율성이 상대적으로 낮다. 본 발명의 실시 예에서, 클러스터 컴퓨터 시스템의 컴퓨터간의 데이터 미러링 작동의 효율을 개선하기 위해, 시스템 버스가 클러스터 컴퓨터 시스템에서 둘 이상의 컴퓨터의 프로세서들을 직접 연결하는데 사용되고, 시스템 버스 상에서 적절하게 완료되는 데이터 미러링 작동 절차(procedure)들의 집합이 이를 토대로 설계될 수 있다. 다음에, 도 2 및 도 3을 참조하여 상세하게 설명한다.
도 2는 본 발명의 실시 예에 따른 컴퓨터 시스템에서의 연결의 개략도이다. 도 2에서, 제1 컴퓨터 및 제2 컴퓨터는 클러스터 컴퓨터 시스템 내의 2대의 컴퓨터 일 수 있다. 각 운영 체제는 두 대의 컴퓨터에서 각각 독립적으로 실행된다. 두 컴퓨터의 프로세서(도 2의 제1 프로세서 및 제2 프로세서)들은 시스템 버스 인터페이스를 포함하고, 프로세서는 "루즈 커플링(loose coupling))"과 유사한 방식으로 시스템 버스를 이용하여 함께 연결된다. 또한, 제2 컴퓨터의 메모리 어드레스 공간(이하, 제2 메모리 어드레스 공간이라고 명명함)의 적어도 일부는 제1 컴퓨터의 메모리 어드레스 공간(이하, 제1 메모리 어드레스 공간이라고 명명함)의 적어도 일부의 미러(mirror) 어드레스 공간이다. 도 2에 도시된 연결 관계 및 구성에 기초하여, 도 3을 참조하여, 다음에 본 발명의 일 실시 예에 따른 클러스터 컴퓨터 시스템에서의 기록 요청 처리 방법을 상세하게 설명한다.
도 3은 본 발명의 실시 예에 따른 기록 요청 처리 방법의 개략적인 흐름도이다. 도 3의 방법은, 도 2의 제1 프로세서에 의해 실행될 수 있다. 도 3의 방법은 다음의 단계들을 포함한다.
310: 제1 프로세서가 기록 요청을 수신하며, 기록 요청은 기록될 타깃 데이터 및 타깃 데이터의 기록 어드레스를 포함한다.
320: 제1 프로세서는 기록 어드레스가 제1 메모리 어드레스 공간에 위치하는 것으로 결정한다.
330: 제1 프로세서는 기록 요청에 따라 제1 메모리 어드레스 공간에 기록 요청의 타깃 데이터를 기록하고, 제2 프로세서가 타깃 데이터를 제2 메모리 어드레스 공간에 기록하도록(또는 제2 프로세서에게 기록하도록 명령하기 위해서), 시스템 버스를 이용하여 기록 요청의 타깃 데이터를 제2 프로세서에 전달한다.
일 실시 예에서, 제1 프로세서는 타깃 데이터를 제1 메모리 어드레스 공간에 직접 기록할 수 있으며, 다른 실시 예에서, 제1 프로세서는 메모리 컨트롤러를 이용하여 제1 메모리 어드레스 공간에 타깃 데이터를 기록할 수 있다.
본 발명의 실시 예는 제1 프로세서에 의해 제1 메모리 어드레스 공간에 타깃 데이터를 기록하고, 시스템 버스를 이용하여 제1 프로세서에 의해 타깃 데이터를 제2 프로세서에 전달하는 작동 시퀀스(sequence)에 특별한 제한을 두지 않는다는 것을 이해해야 하며, 작동 시퀀스는 동시에 수행될 수도 있고 연속적으로 수행될 수도 있다.
종래 기술에서, 시스템 버스는 일반적으로 컴퓨터 내부에서 기능적 구성 요소들의 연결을 구현하기 위해 사용되며, 시스템 버스는 컴퓨터의 내부 버스 중 하나이며 높은 대역폭과 낮은 지연의 특징을 갖는다. 본 발명의 실시 예에서, 2개의 상이한 컴퓨터에 각각 속하는 프로세서들이 시스템 버스를 이용하여 클러스터 컴퓨터 시스템에 함께 연결된다. 시스템 버스는 종래 기술에서와 같은 다수 DMA 작동을 요구하지 않고, 또는 복잡한 프로토콜 기반 변환 없이, 기록 데이터의 미러링 작동을 구현하는데 사용되며, 이는 미러링 작동 지연을 감소시키고 시스템의 IOPS 성능을 향상시킨다. 특히, 종래 기술에서, IO 장치는 2대의 컴퓨터들간에 미러 패킷을 전송하는 데 사용된다.
따라서, 미러 데이터(전술한 타깃 데이터에 대응함)를 먼저 메모리로부터 꺼내야 하고; 그런 다음 타깃 데이터가 IO 장치로(예를 들어 네트워크 어뎁터를 이용하여) 전달되며; 다음, 네트워크 어댑터가 네트워크 어댑터의 소프트웨어 드라이버를 이용하여 미러 데이터를 패킷으로 캡슐화하고 패킷을 수신단(receive end)으로 전달하고; 수신단은 패킷을 수신한 후에 패킷을 디캡슐레이션한 다음, 수신단의 메모리에 패킷을 기록한다. 전체 프로세스에서, 다중 메모리 읽기 및 쓰기 작동이 필요하며, 복잡한 프로토콜 기반 캡슐화 및 디캡슐화가 수반된다. 본 발명의 실시 예에서, 타깃 데이터는 시스템 버스를 이용하여 제1 프로세서에 의해 제2 프로세서에 직접 전달되며, 이는 메모리로부터 데이터를 판독하는 프로세스를 제거한다.
또한, 타깃 데이터가 패킷(예를 들면, 이하에 설명하는 미러 패킷)에 캡슐화되고, 시스템 버스를 이용하여 전달될 수 있음에도 불구하고, 시스템 버스는 내부 버스 중 하나이며, 시스템 버스 상에서 사용되는 패킷의 캡슐화 형식(form)은 비교적 간단하게 설계될 수도 있다. 예를 들어, IO 장치(예: 네트워크 어댑터)와 같은 복잡한 프로토콜 및 캡슐화 형식을 필요로 하지 않고, 데이터 기록 패킷 및 데이터 미러 패킷이 기록 패킷의 일부 필드를 변경하여 구분될 수 있다.
선택적으로, 일 실시 예에서, 프로세서는 하나 이상의 시스템 버스 인터페이스를 포함할 수 있다.
선택적으로, 일 실시 예에서, 시스템 버스는 캐시 일관성(cache coherence, CC)을 지원하는 버스일 수 있다. 예를 들어, 시스템 버스는 CC 버스라고 명명될 수 있다. 일 실시 예에서, 시스템 버스는 하이퍼트랜스포트(HyperTransport, HT) 버스 또는 빠른 경로 인터커넥트(Quick Path Interconnect, QPI) 버스 중 적어도 하나일 수 있다.
선택적으로, 일 실시 예에서, 도 3에 도시된 방법은, 저장 장치의 분야에 적용될 수 있다. 저장 장치 분야에서, 클러스터 컴퓨터 시스템은 이중 컨트롤러 또는 다중 컨트롤러 시스템일 수 있다. 제1 컴퓨터 및 제2 컴퓨터 중 어느 하나의 컴퓨터는 저장 장치 분야의 컨트롤러와 동일하다.
제1 메모리 어드레스 공간은 제1 컴퓨터의 메모리 어드레스 공간의 일부일 수 있고, 제2 메모리 어드레스 공간은 제2 컴퓨터의 메모리 어드레스 공간의 일부일 수 있다. 일 실시 예에서, 제1 메모리 어드레스 공간은 또한 제2 메모리 어드레스 공간의 미러 어드레스 공간일 수 있거나, 제1 메모리 어드레스 공간 및 제2 메모리 어드레스 공간은 서로의 상호(mutual) 미러 어드레스 공간일 수 있다.
제1 메모리 어드레스 공간 및 제2 메모리 어드레스 공간은 어드레스가 연속하는(consecutive) 공간(간략하게, 연속적 어드레스 공간)일 수 있으며, 또는 어드레스가 연속하지 않는 공간(간략하게, 불연속적 어드레스 공간)일 수 있다. 일 실시 예에서, 제1 메모리 어드레스 공간 및 제2 메모리 어드레스 공간은 모두 연속적 어드레스 공간이고, 제1 메모리 어드레스 공간 및 제2 메모리 어드레스 공간을 연속적 어드레스 공간으로 설정하는 것은, 시스템의 하드웨어 구현을 단순화할 수 있다. 일 실시 예에서, 제1 메모리 어드레스 공간 및 제2 메모리 어드레스 공간의 공간 크기는 동일할 수 있다.
선택적으로, 일 실시 예에서, 제1 메모리 어드레스 공간 및 제2 메모리 어드레스 공간은 메모리에서의 캐시 가능(cacheable) 공간일 수 있다. 이러한 방식으로, 미러링 작동을 완료하는 것 외에도, 제1 메모리 어드레스 공간 및 제2 메모리 어드레스 공간은 다수(multiple) 프로세서들 간의 캐시 일관성에 관한 문제점을 추가로 해결할 수 있다.
선택적으로, 일 실시 예에서, 제2 메모리 어드레스 공간이 제1 메모리 어드레스 공간의 미러 어드레스 공간이라는 것은, 제1 메모리 어드레스 공간에 기록된 데이터가 제2 메모리 어드레스 공간에 기록될 필요가 있거나, 또는 제1 메모리 어드레스 공간에 대한 각각의 기록 작동이 제2 메모리 어드레스 공간에 미러링될 필요가 있다는 것을 지시할 수 있다. 즉, 동일한 데이터가 제1 메모리 어드레스 공간 및 제2 메모리 어드레스 공간 모두에 저장되어, 클러스터 컴퓨터 시스템에서 데이터의 보안 및 신뢰성을 보장할 수 있다.
선택적으로, 일 실시 예에서, 제1 메모리 어드레스 공간과 제2 메모리 어드레스 공간 사이의 미러 관계는 사전 구성될 수 있다. 사전 구성 후에, 미러 관계가 정적으로 유지되거나 또는 동적으로 조정되도록 설정될 수 있다. 예를 들어, 프로세서의 펌웨어(firmware)는 미러 어드레스 공간의 초기화를 담당할 수 있으며, 두 컴퓨터의 프로세서들은 각각의 미러 어드레스 공간의 위치 및 크기를 피어(peer) 프로세서에 알리기 위해, 시스템 버스를 이용하여 서로에게 알림 패킷(notification packet)을 전달하거나; 또는, 대역 외 관리 시스템(out-of-band management system)은 시스템 초기화 중에 구성을 수행하고 구성 결과를 컴퓨터에 알릴 수 있다. 일 실시 예에서, 제1 메모리 어드레스 공간과 제2 메모리 어드레스 공간 사이의 미러 관계는 클러스터 컴퓨터 시스템의 요구(demand)에 따라 (실시간으로) 구성되거나 업데이트될 수 있다. 일 실시 예에서, 미러 어드레스 공간의 구성의 성공 또는 실패는 미러링 작동이 컴퓨터간에 수행될 수 있는 지의 여부에 영향을 미치지만, 컴퓨터의 정상적인 시작(start) 및 실행(running)에는 영향을 주지 않는다.
선택적으로, 일 실시 예로서, 단계 330은 제1 프로세서가, 기록 요청에 따라 타깃 데이터에 대한 기록 패킷을 생성하는 단계; 및 상기 제1 프로세서가, 상기 기록 패킷에 따라 상기 타깃 데이터를 제1 메모리 어드레스 공간의 기록 어드레스에 기록하는 단계를 포함한다. 여기서 패킷은 또한 메시지(message)로 명명될 수 있다.
시스템 버스를 토대로 하는 컴퓨터 시스템의 두 컴퓨터 사이의 미러 기능을 구현하기 위해, PCIe 비-트랜스패런트 브리지(PCIe non-transparent bridge) 개념을 참조할 수 있다. 두 시스템 사이에 비-트랜스패런트 브리지가 배치되고, 두 시스템의 어드레스 도메인이 분리되고, 메모리 어드레스 변환(한 시스템의 메모리 어드레스가 다른 시스템의 메모리 어드레스에 해당하는 미러 어드레스로 변환됨)과 다른 미러 관련 작동이, 비-트랜스패런트 브리지를 이용하여 완료될 수 있다. 다음은 특정 실시 예를 참조하여 비-트랜스패런트 브리지의 특정 형태에 대한 상세한 설명을 제공한다.
비-트랜스패런트 브리지는 하드웨어를 이용하여 구현될 수 있거나 소프트웨어를 이용하여 구현될 수 있다. 예를 들어, 비-트랜스패런트 브리지는 회로를 이용하여 구현 될 수 있으며, 이 경우, 비-트랜스패런트 브리지는 비-트랜스패런트 브리지 회로로 명명될 수 있다. 하드웨어를 이용하여 비-트랜스패런트 브리지를 구현하는 것은 미러링 작동 효율성과 시스템의 전체 IOPS를 더 향상시킬 수 있다. 구체적으로, 종래 기술에서는 IO 장치(예를 들면, 네트워크 어댑터)들을 이용하여 미러 패킷을 전달하고, 이러한 IO 장치들은 각각의 소프트웨어 드라이버를 이용하여 미러 패킷을 처리한다. 하드웨어 전용 방식(hardware-only manner)과 비교하면, 소프트웨어 방식에서, 미러 패킷 처리 효율성이 명백히 낮으며 지연은 더 높다. 비-트랜스패런트 브리지는 미러링 작동 처리를 위한 특별한 하드웨어로서 배치될 수 있다. 예를 들어, 비-트랜스패런트 브리지는 미러 패킷에 대한 어드레스 및/또는 패킷 유형 변환을 특별히 수행한다. 하드웨어 전용 방식은 미러링 작동 효율성을 더욱 향상시킬 수 있다.
다른 예를 들면, 비-트랜스패런트 브리지는 코드를 이용하여 구현될 수 있으며, 이 경우, 비-트랜스패런트 브리지는 비-트랜스패런트 브리지 로직 모듈로 명명될 수 있다. 비-트랜스패런트 브리지는 미러링 작동 처리를 위한 특별한 하드웨어로서 배치되어 프로세서의 부담(burden)을 경감할 수 있다. 다음은 비-트랜스패런트 브리지가 비-트랜스패런트 브리지의 위치와, 비-트랜스패런트 브리지와 프로세서 내부의 다른 구성 요소 사이의 연결 관계를 설명하기 위한 하드웨어인 예를 사용한다.
프로세서는 일반적으로 컨트롤러 및 산술 유닛(arithmetic unit)을 포함하며, 컨트롤러는 일반적으로 프로세서의 내부 로직(logic) 제어 및 전체 스케줄링을 담당하고, 산술 유닛은 데이터 관련 정수 또는 부동 소수점(floating point) 산술을 수행한다. 미러 관련 작동을 보다 잘 지원하기 위해, 비-트랜스패런트 브리지가 프로세서의 시스템 버스 인터페이스에 배치될 수 있으며, 비-트랜스패런트 브리지는 프로세서의 내부 버스를 이용하여 프로세서 내부의 컨트롤러에 연결될 수 있다. 컨트롤러의 이름 또는 유형 그리고 상이한 유형의 프로세서들의 내부 버스가 상이할 수 있음을 이해해야 한다. 도 4를 참조하면, QPI 기술을 토대로 한 프로세서를 예로 들어, 프로세서 내부의 컨트롤러는 프로세서 내부의 캐시 에이전트(Cache Agent, CA), 홈 에이전트(Home Agent, HA) 등을 참조할 수 있으며, 프로세서 내부의 구성 요소는 링 버스(Ring Bus)를 이용하여 연결된다. 특히, CA는 캐시단(cache end)에 위치한, CPU 내부의 트랜잭션 처리 엔진이다. HA는 메모리 컨트롤러단에 위치된, CPU 내부의 트랜잭션 처리 엔진으로, DDR에 연결된다. CPU 내부의 트랜잭션 처리 엔진은 링 버스를 이용하여 연결된다. 패킷(메시지)은 특정 규칙에 따라 링 버스를 이용하여 엔진들간에 전송될 수 있고, 판독 트랜잭션 또는 기록 트랜잭션과 같은 트랜잭션은 엔진들의 상호 조정(mutual coordination) 에 의해 완료된다. 예를 들어, CPU가 기록 요청을 수신한 후, CA는 기록 요청의 데이터를 메모리에 기록하도록 요청하기 위하여, 데이터를 메모리에 기록하도록 요청하는 데 사용되는 데이터 후기록 패킷(data write-back packet, WbData)을 HA에 전달하고, HA에 의해 리턴된 응답 패킷(response packet, WbCMP)을 수신하여 데이터 기록 작동의 완료를 지시하는 것을 담당할 수 있다. 여전히 도 4를 참조하여, 비-트랜스패런트 브리지(도 4의 NTB)는 시스템 버스 인터페이스에 배치될 수 있고, 여기서, 한쪽 끝(one end)은 시스템 버스 인터페이스에 연결되고 다른 쪽 끝은 CPU의 내부 버스에 연결된다. 이러한 방식으로 프로세서 내부의 컨트롤러, 예를 들어 CA는 내부 버스를 이용하여 비-트랜스패런트 브리지와 메시지 또는 데이터 교환을 수행할 수 있다. 비-트랜스패런트 브리지를 도입하는 것을 토대로, 타깃 데이터의 미러링 작동을 조정하기 위해, 미러 트랜잭션이 도입될 수 있고, 미러 트랜잭션과 관련된 패킷이 구성될 수 있다. 또한, NTB는 메모리 어드레스 변환, 패킷 포맷 변환, 미러 트랜잭션의 정상 종료 및 비정상 종료 결정, 리포트 중단(report interruption) 등을 구현하는 데 사용될 수 있다. 다음은 별도의 자세한 설명을 제공한다.
미러 트랜잭션과 관련된 패킷은 데이터 페이로드(payload)(또는 전술한 타깃 데이터에 대응하고 페이로드라고 명명됨)를 갖는 패킷과, 데이터 페이로드가 없는 패킷으로 분류될 수 있다. 예를 들어, 데이터 페이로드를 갖는 패킷은 미러 패킷으로 명명될 수 있으며, 여기서 미러 패킷은 제1 컴퓨터의 메모리 어드레스 공간에 기록될 데이터 페이로드를 제2 컴퓨터의 메모리 어드레스 공간에 미러링하는 데 사용될 수 있다. 또한, 미러 트랜잭션의 트랜잭션 번호, 데이터 페이로드의 기록 어드레스(어드레스는 비-트랜스패런트 브리지를 이용하여 연속적으로 변환되며, 자세한 내용은 아래 참조) 및 데이터 페이로드는 미러 패킷에서 운반될 수 있다.
구체적으로, 미러 패킷에서의 미러링 작동의 트랜잭션 번호는 8비트 이진수로 표현될 수 있고, 미러 패킷에서의 어드레스는 프로세서의 특정 구현에 따라 결정될 수 있으며, 예를 들어, 어드레스는 X86에서 46비트 내지 48비트 이진수이다. 예를 들어, 미러링 작동의 트랜잭션 번호는 0X01일 수 있으며, 이는 01의 번호로 미러 트랜잭션을 나타내며, 미러 어드레스는 0X001234일 수 있다.
데이터 페이로드가 없는 패킷은, 예를 들어, 미러 완료 패킷 또는 미러 타임아웃(timeout) 패킷을 포함할 수 있다. 이러한 패킷은 미러링 작동의 로직을 향상 시키는 데 사용될 수 있다. 예를 들어, 미러 완료 패킷은 미러링 작동이 완료되었음을 지시하는 데 사용될 수 있고, 미러 타임 아웃 패킷은 타임아웃으로 인해 미러링 작동이 실패했음을 지시하는 데 사용될 수 있다. 미러링 작동과 관련된 어드레스, 미러 트랜잭션 번호 등도 이러한 패킷에 포함될 수 있다.
이하, QPI 기술을 토대로 한 프로세서를 예로 들어, 비-트랜스패런트 브리지의 어드레스 변환 기능 및 패킷 변환 기능을 상세히 설명한다.
먼저, 제1 프로세서의 메모리 어드레스 공간{0X04_0000, 0X04_FFFF}과 제2 프로세서의 메모리 어드레스 공간{0X0A_0000, 0A_FFFF}이 서로 미러링되는 것(미러 관계가 사전구성될 수 있음)을 가정하여, 미러 트랜잭션에 관련된 절차의 예는 다음과 같다.
단계 1: 제1 프로세서의 CA는 데이터를 메모리 어드레스(예를 들어, 0X04_1234)에 기록해야 한다. CA는 시스템 구성에 따라 메모리 어드레스가 이미 다른 시스템의 어드레스와 일치하는 미러 어드레스 공간{0X04_0000, 0X04_FFFF}의 어드레스임을 발견할 수 있다. 따라서, CA는 제1 프로세서에 대한 기록 패킷을 전달할 뿐만 아니라, 미러 공간에 대한 미러 패킷을 전달한다. 기록 패킷은 통상의 기록 작동에 따라 실행될 수 있다. 미러 패킷은 비-트랜스패런트 브리지로 전달되고, 제1 프로세서의 비-트랜스패런트 브리지에 의해 처리될 수 있다. 본 발명의 본 실시 예는 CA에 의해 기록 패킷을 전달하는 작동 및 CA에 의해 미러 패킷을 전달하는 작동의 시간 시퀀스에 특별한 제한을 두지 않는다는 것을 이해해야 한다. 예를 들어, CA는 전술한 작동을 동시에 수행할 수도 있고, 전술한 작동을 연속적으로 수행할 수도 있다.
단계 2: 미러 패킷을 수신한 후, 제1 프로세서의 비-트랜스패런트 브리지는 전술한 메모리 어드레스 공간들간의 미러 관계에 따라, 어드레스 0X04_1234를 0X0A_1234로 변경하고, 미러 패킷을 업데이트하고, 업데이트된 미러 패킷을 시스템 버스 인터페이스(여기서는 QPI 포트일 수 있음)로 전달할 수 있다.
단계 3: 제1 프로세서의 시스템 버스 인터페이스는 업데이트된 미러 패킷을 제2 프로세서의 시스템 버스 인터페이스로 전달한다.
단계 4: 제2 프로세서의 시스템 버스 인터페이스가 미러 패킷을 제2 프로세서의 비-트랜스패런트 브리지로 전달한다.
단계 5: 제2 프로세서의 비-트랜스패런트 브리지는 미러 패킷을 기록 패킷으로 변환하고, 제2 프로세서의 내부 버스를 이용하여 기록 패킷을 메모리 컨트롤러로 전달하여 대응하는 메모리 기록 작동을 완료한다.
단계 6: 제2 프로세서의 메모리 컨트롤러가 메모리 기록 작동을 완료한 후에 미러 기록 완료 패킷을 제2 프로세서의 비-트랜스패런트 브리지에 리턴한다.
단계 7: 제2 프로세서의 비-트랜스패런트 브리지는 메모리 어드레스 공간들간의 미러 관계에 따라, 미러 기록 완료 패킷의 어드레스 필드 0X0A_1234를 0X04_1234로 변경하고, 업데이트된 패킷을 제2 프로세서의 시스템 버스 인터페이스에 전달한다.
단계 8: 제2 프로세서의 시스템 버스 인터페이스가 미러 완료 패킷을 제1 프로세서의 시스템 버스 인터페이스로 전달한다.
단계 9: 제1 프로세서의 시스템 버스 인터페이스는 미러 완료 패킷을 제1 프로세서의 비-트랜스패런트 브리지로 전달한다.
단계 10: 제1 프로세서의 비-트랜스패런트 브리지는 제1 프로세서의 내부 버스를 이용하여 미러 완료 패킷을 미러 패킷의 개시자(initiator), 즉, 단계 1에서의 CA로 전달한다.
단계 11: CA가 미러 완료 패킷을 수신하고, 미러링 작동이 성공적으로 완료된 것으로 결정하며, 트랜잭션을 종료하고 해당 리소스를 해제한다.
또한, 타이머가 제1 프로세서의 비-트랜스패런트 브리지 상에 배치될 수 있다. 타이머가 만료될 때 미러 완료 패킷이 아직 수신되지 않은 경우, 미러 타임아웃 패킷이 미러링 작동의 실패를 지시하기 위해 CA로 전달될 수 있다.
전술한 절차로부터, NTB의 기능은 메모리 어드레스 변환, 패킷 또는 패킷 포맷 변환, 미러 트랜잭션의 비정상 종료 결정, 보고 중단 등을 포함할 수 있음을 알 수 있다.
미러 패킷 및 비-트랜스패런트 브리지를 도입하는 것에 기초하여, 선택적으로, 일 실시 예로서, 단계 340은, 제1 프로세서가, 기록 요청에 따라 미러 패킷을 생성하는 단계 - 상기 미러 패킷은 타깃 데이터 및 기록 어드레스를 포함하고, 상기 미러 패킷은 상기 기록 어드레스의 타깃 데이터를 제2 메모리 어드레스 공간의 미러 어드레스에 기록하는 데 사용됨 -; 상기 제1 프로세서가, 상기 미러 패킷을 상기 제1 프로세서의 비-트랜스패런트 브리지로 전달하는 단계; 상기 제1 프로세서의 비-트랜스패런트 브리지가, 상기 제1 메모리 어드레스 공간과 상기 제2 메모리 어드레스 공간 사이의 미러 관계에 따라, 상기 미러 패킷의 상기 기록 어드레스를 상기 제2 메모리 어드레스 공간에서의 상기 기록 어드레스의 미러 어드레스로 변환하여 업데이트된 미러 패킷을 획득하는 단계; 및 상기 제2 프로세서가 상기 제2 프로세서의 비-트랜스패런트 브리지에 의해 수신된 상기 업데이트된 미러 패킷에 따라 상기 타깃 데이터를 상기 미러 어드레스에 기록하도록, 상기 제1 프로세서의 비-트랜스패런트 브리지가, 상기 시스템 버스를 이용하여 상기 업데이트된 미러 패킷을 상기 제2 프로세서의 비-트랜스패런트 브리지로 전달하는 단계를 포함할 수 있 다.
일 실시 예에서, 타깃 데이터는 기록 패킷을 이용하여 제1 메모리 어드레스 공간에 기록될 수 있고, 타깃 데이터는 미러 패킷을 이용하여 제2 메모리 어드레스 공간에 기록될 수 있으며, 기록 패킷의 패킷 포맷은 미러 패킷의 포맷과 다를 수 있으며, 제1 프로세서는 기록 패킷과 미러 패킷의 포맷에 따라 대응하는 트랜잭션 작동을 수행할 수 있다. 예를 들어, 제1 프로세서는 타깃 데이터의 기록 패킷에 대한 기록 작동을 수행하고 타깃 데이터를 메모리에 기록하고; 제1 프로세서는 미러 패킷에 대한 미러링 작동을 수행하고, 시스템 버스 및 제2 프로세서를 이용하여 미러 패킷 내의 타깃 데이터를 제2 메모리 어드레스 공간에 미러링한다.
상이한 유형들의 프로세서들에 의해 생성된 기록 패킷들의 포맷과 이름은 상이할 수 있음을 이해해야 한다. QPI 기술을 지원하는 인텔(Intel) 프로세서의 예에서, 프로세서에 의해 생성된 기록 패킷은 데이터 후기입 패킷 즉, WbData 패킷으로 명명될 수 있다. 시스템 버스가 QPI 버스인 경우, 기록 패킷은 WbData 패킷일 수 있다. 미러 패킷을 제1 기록 패킷과 구별하기 위해, 미러 패킷은 WbMir 패킷으로 명명될 수 있으며, 여기서 기록 패킷과 미러 패킷은 상이한 패킷 포맷일 수 있다.
선택적으로, 일 실시 예로서, 도 3의 방법은, 상기 제1 프로세서의 비-트랜스패런트 브리지가 미리 설정된 시간 내에 상기 제2 프로세서로부터 미러 완료 패킷을 수신한 후에, 상기 제1 프로세서의 비-트랜스패런트 브리지가 상기 미러 완료 패킷을 상기 제1 프로세서에 전달하는 단계; 및 상기 제1 프로세서가, 상기 미러 완료 패킷에 따라 상기 타깃 데이터에 대한 미러링 작동의 성공을 확인하고, 상기 미러링 작동에 대응하는 미러 트랜잭션을 종료하는 단계를 더 포함할 수 있으며, 상기 미러 완료 패킷은 상기 미러 패킷에 대응하고, 상기 타깃 데이터가 상기 미러 어드레스에 기록되었음을 지시하는 데 사용된다.
선택적으로, 일 실시 예로서, 도 3의 방법은, 상기 제1 프로세서의 비-트랜스패런트 브리지가 상기 미리 설정된 시간 내에 상기 제2 프로세서로부터 상기 미러 완료 패킷을 수신하지 않은 경우, 상기 제1 프로세서의 비-트랜스패런트 브리지가, 미러 타임아웃 패킷을 상기 제1 프로세서에 전달하는 단계; 및 상기 제1 프로세서가, 상기 미러 타임아웃 패킷에 따라 상기 미러링 작동의 실패를 확인하고, 상기 미러 트랜잭션을 종료하는 단계를 더 포함할 수 있다. 다수의 타임아웃 결정 방식들이 있을 수 있다. 예를 들어, 업데이트된 미러 패킷이 제2 프로세서로 전달된 경우, 타이머가 제1 프로세서의 비-트랜스패런트 브리지 상에 배치될 수 있으며, 만약 타이머가 만료된 후에 미러 완료 패킷이 수신되지 않으면, 미러링 작동이 만료된 것으로 결정한다.
본 발명의 본 실시 예에서, 시스템 버스 상에서 미러링 작동을 수행하는 것에 관한 완전한 로직(complete logic)이 제1 프로세서에 추가된다. 로직은 미러링 작동의 성공 또는 실패에 관계없이, 미러링 작동이 종료될 수 있음을 보장하여, 시스템 버스 상의 미러링 작동의 실패에 의해 야기되는 시스템 고장을 피할 수 있다. 이를 토대로, 시스템 버스 인터페이스의 무차별 기습(brute-force surprise) 확장(expansion), 예를 들어, 컴퓨터 내부의 프로세서의 시스템 버스 인터페이스의 기습적 확장(surprise expansion) 또는 기습적 제거(기습적 플러그/ 기습적 제거(surprise plug/surprise removal))가 추가로 지원될 수 있다. 구체적으로 종래 기술에서, 독립형(stand-alone) 시스템의 다수 프로세서는 또한 시스템 버스를 이용하여 연결된다. 예를 들어, 종래 기술에서 캐시 일관성을 지원하는 비균일 메모리 액세스 아키텍처(Non Uniform Memory Access Architecture, NUMA) 시스템에서, 각 프로세서는 로컬 메모리를 액세스할 수 있거나 시스템 버스를 이용하여 비-로컬(non-local) 메모리에 액세스할 수 있으며, 즉, 다수 프로세서의 메모리들이 공유될 수 있다. 그러나 단일 운영 체제가 이러한 다수 프로세서 시스템의 메모리에서 실행되며, 본질적으로, 다수 프로세서 시스템은 여전히 클러스터 컴퓨터 시스템 대신의 독립형 시스템이다. 시스템 버스를 이용하여 다수 프로세서간에 수행되는 작동은, 본질적으로 독립형 시스템 내부의 작업으로 간주된다. 독립형 시스템의 시스템 버스에 대한 모든 작동은 하드웨어에 의해 완료된다. 프로세서의 시스템 버스 상의 작동 동안에 오류가 발생하면(예를 들어, 무차별 기습 확장이 시스템 버스 인터페이스 상에서 발생), 오류는 하드웨어 오류이다. 하드웨어 오류는 독립형 시스템의 고장을 유발시킨다. 시스템 버스 상의 작동 오류로 야기되는 시스템 고장을 피하기 위해, 시스템 버스 상에서 미러링 작동을 수행하는 것에 관한 완전한 로직이 제1 프로세서에 추가된다. 로직은 여기에서 미러링 작동이 미러링 작동의 성공 또는 실패에 관계없이 종료되는 것을 보장하며, 이러한 방식으로, 시스템 버스 상에서의 작동 중에 미완료(incompletion) 또는 오류로 인한 시스템 고장이 회피 될 수 있다.
도 5 및 도 6을 참조하여, 이하, 프로세스가 QPI 기술을 지원하는 프로세서이고, 시스템 버스가 QPI 버스(특정 구조로 도 4를 참조)인 예를 이용하여, 클러스터 시스템에서 시스템 버스를 이용하여 연결되는 컴퓨터들 사이의 데이터 미러링 작동의 프로세스를 상세히 설명한다. 본 발명의 본 실시 예는 도 5 및 도 6의 단계들의 시간 시퀀스에 제한을 두지 않으며, 도 5 및 도 6의 모든 단계들은 도 5 및 도 6에 도시된 단계들과 다른 시퀀스로 수행될 수 있으며, 가능하게는, 도 5 및 도 6의 모든 단계들이 수행되어야 하는 것은 아님을 이해해야 한다. 도 5 및 도 6에 기술된 미러링 작동 프로세스의 트리거링(triggering) 조건은, 제1 컴퓨터의 CA는 CA에 의해 수신된 기록 요청의 기록 어드레스가 제1 컴퓨터의 메모리의 미러 어드레스 공간(전술한 제1 메모리 어드레스 공간에 대응함)에 위치하는 것이며, 여기서 미러 어드레스 공간은 사전구성될 수 있다.
S502: 제1 CPU의 CA는 데이터 후기입 패킷(WbData)을 생성하고, 기록 패킷을 제1 CPU의 HA에 전달하며, 여기서 기록 패킷은 메모리에 기록될 타깃 데이터를 포함한다.
S504: 제1 CPU의 CA는 미러 패킷(WbMir)을 생성하고, 미러 패킷을 제1 CPU의 비-트랜스패런트 브리지로 전달하며, 여기서 미러 패킷은 메모리에 기록될 타깃 데이터를 포함한다.
구체적으로, 데이터 후기입 패킷 및 미러 패킷의 포맷은 상이할 수 있으므로, 프로세서는 패킷 포맷에 따라 상이한 포맷의 패킷에 대응하는 후속 작동 유형을 결정한다. 예를 들어, 데이터 후기입 패킷에 대한 기록 작동이 수행되고, 미러 패킷에 대한 미러링 작동이 수행된다. 단계 S502와 단계 S504는 동시에 수행될 수 있거나, 단계 S502와 단계 S504 중 임의 하나가 먼저 수행될 수 있다.
S506: 제1 CPU의 HA는 데이터 후기입 패킷을 수신한 후 타깃 데이터를 제1 컴퓨터의 DDR 메모리에 기록하고, 데이터 후기입 완료 패킷을 CA에 리턴한다.
S508: 제1 CPU의 비-트랜스패런트 브리지는 미러 패킷을 수신한 후 미러 패킷을 제2 CPU의 비-트랜스패런트 브리지로 전달한다.
비-트랜스패런트 브리지는 CPU의 시스템 버스 인터페이스에 위치할 수 있으며, 비-트랜스패런트 브리지 간의 전송은 CPU 사이의 QPI 인터페이스와 QPI 버스를 이용하여 완료될 수 있다.
S510: 제2 CPU의 비-트랜스패런트 브리지는 미러 패킷을 수신한 후에 미러 패킷을 데이터 후기입 패킷으로 변환하고, 데이터 후기입 패킷을 제2 CPU 내부의 HA에 전달하며, 데이터 후기입 패킷은 타깃 데이터를 포함한다.
S512: 제2 CPU의 HA는 데이터 후기입 패킷을 수신한 후 타깃 데이터를 제2 컴퓨터의 DDR 메모리에 기록하고, 데이터 후기입 완료 패킷을 제2 CPU의 비-트랜스패런트 브리지에 리턴한다.
타깃 데이터가 기록되는 제2 컴퓨터의 메모리 어드레스 공간과 제1 컴퓨터의 제1 메모리 어드레스 공간은 서로의 미러 어드레스 공간이라는 것을 이해해야 한다.
S514: 제2 CPU의 비-트랜스패런트 브리지는 수신된 데이터의 후기입이 완료된 후 데이터 후기입 완료 패킷을 제1 CPU의 비-트랜스패런트 브리지로 전달한다.
구체적으로, 비-트랜스패런트 브리지 모듈 간의 QPI 버스는 데이터 후기입 완료 패킷의 전송을 완료하는 데 사용될 수 있다.
S516: 제1 CPU의 비-트랜스패런트 브리지는 수신된 데이터 후기입 완료 패킷을 미러 완료 패킷(MirCMP)으로 변환하고, 미러 완료 패킷을 제1 CPU의 CA에 전달한다.
S518: 제1 CPU의 CA는 S506에서의 데이터 후기입 완료 패킷 및 S516에서의 미러 완료 패킷을 수신한 후, 제1 컴퓨터와 제2 컴퓨터의 각각 서로 미러링하는 메모리 어드레스 공간들에 타깃 데이터가 기록된 것을 확인하고, 미러 트랜잭션을 종료한다.
제1 CPU의 CA는 상위층 애플리케이션에 미러 트랜잭션의 완료를 알리거나, 상위층 애플리케이션에 미러링 작동의 성공을 알릴 수 있다.
본 발명의 본 실시 예에 따르면, 컴퓨터들의 프로세서들은 QPI 버스를 이용하여 연결되며, 미러링 작동 절차들의 집합은 QPI 버스에 기초하여 설계된다. QPI 버스는 시스템 버스이며, 낮은 지연과 높은 대역폭의 이점을 가지고 있으므로, 데이터 미러링 작동의 효율성을 향상시킬 수 있다.
실제로, 미러링 작동이 항상 성공적으로 종료될 수는 없다. 미러링 작동의 실패는 시스템 버스 인터페이스의 오류 또는 CPU의 무차별 기습 확장(기습적 확장 또는 기습적 제거), 또는 두 호스트 간의 버스 케이블로 인해 발생할 수 있다. 미러링 작동의 성공 또는 실패가 전체 시스템에서의 다른 트랜잭션의 처리에 영향을 미치지 않도록 하기 위해, 본 발명의 일 실시 예는 미러링 작동의 비정상 종료를 처리하는 방식을 제공한다. 자세한 내용은 도 6을 참조한다.
도 6의 S602, S604, S608, S610 및 S612는 각각 도 5의 S502, S504, S508, S510 및 S512와 유사하며, 상세한 설명은 여기서 다시 기술되지 않는다.
S616: 타이머가 만료된 후, 제1 CPU의 비-트랜스패런트 브리지가 제2 CPU의 비-트랜스패런트 브리지에 의해 전달된 데이터 후기입 완료 패킷을 수신하지 않으면, 제1 CPU의 비-트랜스패런트 브리지가 미러 타임아웃 패킷을 제1 CPU의 CA에 전달한다.
구체적으로, 타이머는 S608이 수행되는 경우, 제1 CPU의 비-트랜스패런트 브리지 상에 배치될 수 있고, 타이밍 길이는 실험이나 경험에 따라 설정될 수 있다.
S618: 제1 CPU의 CA는 미러 타임아웃 패킷을 수신한 후에 미러링 작동의 실패(TranFail)를 확인하고, 미러링 작동을 종료한다.
CA는 미러링 작동 실패에 대한 결과를 운영 체제에 보고할 수 있으며, 운영 체제는 미러링 작동 실패와 관련된 로그를 보관(keep)한다.
도 2 내지 도 6을 참조하여 전술한 설명은 본 발명의 실시 예에 따른 클러스터 컴퓨터 시스템에서의 기록 요청 처리 방법을 제1 프로세서의 관점에서 상세하게 설명한다. 이하, 도 7을 참조하여, 본 발명의 실시 예에 따른 클러스터 컴퓨터 시스템에서의 기록 요청 처리 방법을 제2 프로세서의 관점에서 설명한다. 제1 프로세서와 제2 프로세서 간의 상호 작용(interaction), 제2 프로세서 측에서 기술된 관련 특징 및 기능 등은 제1 프로세서 측에 대한 설명에 대응한다는 것을 이해해야 한다. 간결함을 위해, 반복되는 설명은 적절하게 생략된다.
도 7은 본 발명의 실시 예에 따른 기록 요청 처리 방법의 개략적인 흐름도이다. 도 7의 방법은, 도 2의 제2 프로세서에 의해 실행될 수 있다. 도 7의 방법은 다음의 단계를 포함한다.
710: 제2 프로세서는 시스템 버스를 이용하여 제1 프로세서로부터 타깃 데이터를 수신하며, 여기서 타깃 데이터는 제1 컴퓨터의 메모리에 기록될 데이터이고, 타깃 데이터의 기록 어드레스는 제1 메모리 어드레스 공간에 위치된다.
720: 제2 프로세서가 타깃 데이터를 제2 메모리 어드레스 공간에 기록한다.
일 실시 예에서, 제2 프로세서는 타깃 데이터를 제1 메모리 어드레스 공간에 직접 기록할 수 있으며, 다른 실시 예에서, 제2 프로세서는 메모리 컨트롤러를 이용하여 제1 메모리 어드레스 공간에 타깃 데이터를 기록할 수 있다.
본 발명의 본 실시 예에서, 2개의 상이한 컴퓨터의 프로세서는 시스템 버스를 이용하여 함께 연결된다. 시스템 버스는 종래 기술에서와 같은 다수 DMA 작동을 요구하지 않거나 또는 복잡한 프로토콜 기반 변환 없이, 기록될 데이터의 미러링 작동을 구현하는데 사용되며, 이는 미러링 작동 지연을 감소시키고 시스템의 IOPS 성능을 향상시킨다.
선택적으로, 일 실시 예로서, 단계 710은, 제2 프로세서의 비-트랜스패런트 브리지가, 시스템 버스를 이용하여 제1 프로세서로부터 미러 패킷을 수신하는 단계를 포함할 수 있으며, 상기 미러 패킷은 상기 타깃 데이터 및 상기 제2 메모리 어드레스 공간에서의 상기 기록 어드레스의 미러 어드레스를 포함하며, 상기 제2 프로세서가, 상기 타깃 데이터를 상기 제2 메모리 어드레스 공간에 기록하는 것은, 상기 제2 프로세서의 비-트랜스패런트 브리지가, 상기 미러 패킷을 상기 타깃 데이터에 대한 기록 패킷으로 변환하는 단계; 및 상기 제2 프로세서의 비-트랜스패런트 브리지가, 상기 제2 컴퓨터의 메모리 컨트롤러를 이용하여 상기 기록 패킷을 상기 제2 메모리 어드레스 공간의 상기 미러 어드레스에 기록하는 단계를 포함할 수 있다.
선택적으로, 일 실시 예로서, 도 7의 방법은, 상기 제2 프로세서의 비-트랜스패런트 브리지가, 상기 메모리 컨트롤러로부터 상기 기록 패킷에 대응하는 기록 완료 패킷을 수신하는 단계 - 상기 기록 완료 패킷은 상기 미러 어드레스를 포함함 -; 상기 제2 프로세서의 비-트랜스패런트 브리지가, 상기 제1 메모리 어드레스 공간과 상기 제2 메모리 어드레스 공간 사이의 매핑 관계에 따라 상기 미러 어드레스를 상기 기록 어드레스로 변환하는 단계; 및 상기 제2 프로세서의 비-트랜스패런트 브리지가, 상기 미러 패킷에 대응하는 미러 완료 패킷을 상기 제1 프로세서로 전달하는 단계를 더 포함할 수 있으며, 상기 미러 완료 패킷은 상기 기록 어드레스를 포함하고, 상기 미러 완료 패킷은 상기 타깃 데이터가 상기 미러 어드레스에 기록되었음을 지시하는 데 사용된다.
선택적으로, 일 실시 예로서, 시스템 버스는 QPI 버스 또는 HT 버스이다.
전술한 실시 예들 중 일부에서, 제1 프로세서의 비-트랜스패런트 브리지는 미러 패킷의 기록 어드레스를 미러 어드레스(미러 어드레스는 기록 어드레스에 대응하는 제2 메모리 어드레스 공간에서의 어드레스임)로 변환하는 역할을 하며, 제2 프로세서의 비-트랜스패런트 브리지는 미러 패킷을 제2 프로세서에 의해 인식될 수 있는 기록 패킷으로 변환하는 역할을 한다. 그러나 본 발명의 본 실시 예는 이에 한정되지 않는다. 실제로, 제2 프로세서의 비-트랜스패런트 브리지는 어드레스 변환을 담당할 뿐만 아니라 패킷 변환을 담당할 수도 있다. 유사하게, 전술한 실시 예들 중 일부에서, 제2 프로세서의 비-트랜스패런트 브리지는 기록 완료 패킷의 미러 어드레스를 기록 어드레스로 변환하는 역할을 하고, 제1 프로세서의 비-트랜스패런트 브리지는 기록 완료 패킷을 미러 완료 패킷으로 변환하는 역할을 한다. 그러나 본 발명의 실시 예는 이에 한정되지 않는다. 실제로, 제1 프로세서의 비-트랜스패런트 브리지는 어드레스 변환뿐만 아니라 패킷 변환을 담당할 수도 있다.
또한, 프로세서의 비-트랜스패런트 브리지는 패킷 변환 또는 패킷 내의 어드레스의 변환과 같은 미러 관련 작동을 담당할 수 있고, 다른 작동 또는 기능(예를 들어, 기록 패킷 및 미러 패킷을 생성하는 작동, 데이터 기록 작동 그리고 미러 패킷을 비-트랜스패런트 브리지로 전달하는 작동)은 예를 들어, 프로세서의 컨트롤러 또는 제어 로직에 의해 수행되는 바와 같이, 프로세서 본체(body)에 의해 수행될 수 있음을 이해해야 한다. QPI 기술을 지원하는 CPU의 예에서, 프로세서 본체는 CPU의 CA 또는 HA와 같은 처리 엔진일 수 있다.
도 2 내지 도 7을 참조하여, 전술한 내용은 본 발명의 실시 예에 따른 클러스터 컴퓨터 시스템에서의 기록 요구 처리 방법을 상세하게 설명한다. 이하, 도 8 내지 도 11을 참조하여, 본 발명의 실시 예에 따른 프로세서 및 컴퓨터를 상세히 설명한다.
도 8은 본 발명의 일 실시 예에 따른 프로세서의 개략적인 구조도이다. 도 8의 프로세서(800)는 도 1 내지 도 7의 제1 프로세서에 의해 수행되는 모든 단계를 구현할 수 있다. 반복을 피하기 위해, 상세한 설명은 여기에서 다시 설명하지 않는다. 프로세서(800)는 제1 컴퓨터에 위치하고, 제1 컴퓨터는 제2 컴퓨터에 연결되며, 각각의 운영 체제는 제1 컴퓨터 및 제2 컴퓨터에서 각각 실행되고, 제2 컴퓨터는 다른 프로세서를 포함하며, 프로세서(800)는 시스템 버스 인터페이스(810)를 포함하고, 프로세서(800)의 시스템 버스 인터페이스는 시스템 버스를 이용하여 다른 프로세서의 시스템 버스 인터페이스에 연결되며, 제2 컴퓨터의 제2 메모리 어드레스 공간은 제1 컴퓨터의 제1 메모리 어드레스 공간의 미러 어드레스 공간이고, 프로세서(800)는 컨트롤러(820) 및 내부 버스(830)를 더 포함하고, 컨트롤러(820)는 내부 버스(830)를 이용하여 프로세서(800)의 시스템 버스 인터페이스(810)에 연결된다.
컨트롤러(820)는 기록 요청을 수신하고―기록 요청은 기록될 타깃 데이터 및 타깃 데이터의 기록 어드레스를 포함함--; 기록 어드레스가 제1 메모리 어드레스 공간에 위치하는 것으로 결정하고; 기록 요청의 타깃 데이터를 제1 메모리 어드레스 공간에 기록하고; 그리고 다른 프로세서가 제2 메모리 어드레스 공간에 타깃 데이터를 기록하도록, 시스템 버스를 이용하여 기록 요청의 타깃 데이터를 다른 프로세서로 전달하도록 구성된다.
본 발명의 본 실시 예에서, 2개의 상이한 컴퓨터의 프로세서는 시스템 버스를 이용하여 함께 연결된다. 시스템 버스는 종래 기술에서와 같은 다수 DMA 작동을 요구하지 않거나 또는 복잡한 프로토콜 기반 변환 없이, 기록 데이터의 미러링 작동을 구현하는데 사용되며, 이는 미러링 작동 지연을 감소시키고 시스템의 IOPS 성능을 향상시킨다.
선택적으로, 일 실시 예로서, 프로세서(800)는 비-트랜스패런트 브리지(840)를 더 포함할 수 있으며, 비-트랜스패런트 브리지(840)는 시스템 버스 인터페이스(810)에 연결되고, 비-트랜스패런트 브리지(840)는 내부 버스(830)를 이용하여 컨트롤러(820)에 연결되며; 컨트롤러(820)는 구체적으로, 기록 요청에 따라 미러 패킷을 생성하고―미러 패킷은 타깃 데이터 및 기록 어드레스를 포함하고, 미러 패킷은 타깃 데이터를 제2 메모리 어드레스 공간에서의 기록 어드레스의 미러 어드레스에 기록하는데 사용됨--; 그리고 미러 패킷을 비-트랜스패런트 브리지로 전달하도록 구성되며, 비-트랜스패런트 브리지(840)는 제1 메모리 어드레스 공간과 제2 메모리 어드레스 공간 사이의 미러 관계에 따라, 미러 패킷의 기록 어드레스를 미러 어드레스로 변환하여 업데이트된 미러 패킷을 획득하고; 그리고 다른 프로세서가 비-트랜스패런트 브리지에 의해 수신된 업데이트된 미러 패킷에 따라 타깃 데이터를 미러 어드레스에 기록하도록, 시스템 버스를 이용하여 업데이트된 미러 패킷을 다른 프로세서의 비-트랜스패런트 브리지로 전달하도록 구성된다.
선택적으로, 일 실시 예로서, 비-트랜스패런트 브리지(840)는 추가로, 미리 설정된 시간 내에 다른 프로세서로부터 미러 완료 패킷을 수신한 후에, 미러 완료 패킷을 컨트롤러(820)로 전달하도록 구성되며, 미러 완료 패킷은 미러 패킷에 대응하고, 타깃 데이터가 미러 어드레스에 기록되었음을 지시하는 데 사용되고, 컨트롤러(820)는, 추가로, 미러 완료 패킷에 따라 타깃 데이터에 대한 미러링 작동의 성공을 확인하고, 미러링 작동에 대응하는 미러 트랜잭션을 종료하도록 구성된다.
선택적으로, 일 실시 예로서, 비-트랜스패런트 브리지(840)는 추가로, 미러 완료 패킷이 미리 설정된 시간 내에 다른 프로세서로부터 수신되지 않은 경우, 미러 타임아웃 패킷을 컨트롤러(820)로 전달하도록 구성되고, 컨트롤러(820)는, 추가로, 미러 타임아웃 패킷에 따라 미러링 작동의 실패를 확인하고, 미러 트랜잭션을 종료하도록 구성된다.
선택적으로, 일 실시 예로서, 컨트롤러(820)는 구체적으로, 기록 요청에 따라, 타깃 데이터 및 기록 어드레스를 포함하는 미러 패킷을 생성하고; 그리고 미러 패킷을 프로세서의 비-트랜스패런트 브리지로 전달하도록 구성되며, 프로세서의 비-트랜스패런트 브리지는, 다른 프로세서의 비-트랜스패런트 브리지가 미러 패킷의 기록 어드레스를 제2 메모리 어드레스 공간에서의 기록 어드레스의 미러 어드레스로 변환하여 업데이트된 미러 패킷을 획득하고, 다른 프로세서는 업데이트된 미러 패킷에 따라 타깃 데이터를 미러 어드레스에 기록하도록, 시스템 버스를 이용하여 미러 패킷을 다른 프로세서의 비-트랜스패런트 브리지로 전달한다.
선택적으로, 일 실시 예로서, 컨트롤러는 구체적으로, 기록 요청에 따라 타깃 데이터에 대한 기록 패킷을 생성하고; 그리고 기록 패킷에 따라 타깃 데이터를 제1 메모리 어드레스 공간의 기록 어드레스에 기록하도록 구성된다.
선택적으로, 일 실시 예로서, 시스템 버스는 QPI 버스 또는 HT 버스이다.
도 9는 본 발명의 일 실시 예에 따른 프로세서의 개략적인 구조도이다. 도 9의 프로세서(900)는 도 1 내지 도 7의 제2 프로세서에 의해 수행되는 모든 단계를 구현할 수 있다. 반복을 피하기 위해, 상세한 설명은 여기에서 다시 설명하지 않는다. 프로세서(900)는 제1 컴퓨터에 연결된 제2 컴퓨터에 위치하고, 각각의 운영 체제는 제1 컴퓨터 및 제2 컴퓨터에서 각각 실행되고, 제1 컴퓨터는 다른 프로세서를 포함하며, 프로세서(900)는 시스템 버스 인터페이스(910)를 포함하고, 다른 프로세서의 시스템 버스 인터페이스는 시스템 버스를 이용하여 프로세서의 시스템 버스 인터페이스에 연결되며, 제2 컴퓨터의 제2 메모리 어드레스 공간은 제1 컴퓨터의 제1 메모리 어드레스 공간의 미러 어드레스 공간이고, 프로세서(900)는 컨트롤러(920), 내부 버스(930), 및 비-트랜스패런트 브리지(940)를 포함하고, 비-트랜스패런트 브리지(940)는 프로세서(900)의 시스템 버스 인터페이스(910)에 연결되며, 컨트롤러(920)는 내부 버스(930)를 이용하여 비-트랜스패런트 브리지(940)에 연결된다.
비-트랜스패런트 브리지(940)는, 시스템 버스를 이용하여 다른 프로세서로부터 타깃 데이터를 수신하고, 타깃 데이터를 제2 메모리 어드레스 공간에 기록하도록 구성되며, 타깃 데이터는 다른 프로세서의 메모리에 기록될 데이터이고, 타깃 데이터의 기록 어드레스는 제1 메모리 어드레스 공간에 위치된다.
본 발명의 본 실시 예에서, 2개의 상이한 컴퓨터들의 프로세서들은 시스템 버스를 사용하여 함께 연결된다. 시스템 버스는 종래 기술에서와 같은 다수의 DMA 작동을 필요로 하지 않거나 또는 복잡한 프로토콜 기반의 변환 없이, 기록될 데이터의 미러링 작동을 구현하는데 사용되며, 이는 미러링 작동 지연을 감소시키고 시스템의 IOPS 성능을 향상시킨다.
선택적으로, 일 실시 예로서, 비-트랜스패런트 브리지(940)는, 구체적으로, 시스템 버스를 이용하여 다른 프로세서로부터, 타깃 데이터 및 제2 메모리 어드레스 공간에서의 기록 어드레스의 미러 어드레스를 포함하는 미러 패킷을 수신하고; 미러 패킷을 타깃 데이터에 대한 기록 패킷으로 변환하고; 그리고 제2 컴퓨터의 메모리 컨트롤러를 이용하여 기록 패킷을 제2 메모리 어드레스 공간의 미러 어드레스에 기록하도록 구성된다.
선택적으로, 일 실시 예로서, 비-트랜스패런트 브리지(940)는, 추가로, 메모리 컨트롤러로부터, 기록 패킷에 대응하며, 미러 어드레스를 포함하는 기록 완료 패킷을 수신하고; 제1 메모리 어드레스 공간과 제2 메모리 어드레스 공간 사이의 매핑 관계에 따라 미러 어드레스를 기록 어드레스로 변환하며; 그리고 미러 패킷에 대응하는 미러 완료 패킷을 다른 프로세서로 전달하도록 구성되며, 미러 완료 패킷은 기록 어드레스를 포함하고, 미러 완료 패킷은 타깃 데이터가 미러 어드레스에 기록되었음을 지시하는 데 사용된다.
선택적으로, 일 실시 예로서, 시스템 버스는 QPI 버스 또는 HT 버스이다.
도 10은 본 발명의 일 실시 예에 따른 컴퓨터의 개략적인 구조도이다. 도 10의 컴퓨터(1000)는 도 1 내지 도 7의 제1 컴퓨터에 대응하고, 제1 프로세서에 의해 수행되는 모든 단계를 구현할 수 있다. 반복을 피하기 위해, 상세한 설명은 여기에서 다시 설명하지 않는다. 컴퓨터(1000)는 다른 컴퓨터에 연결되며, 각각의 운영 체제는 컴퓨터(1000) 및 다른 컴퓨터에서 각각 실행되고, 컴퓨터(1000)는 제1 프로세서를 포함하고, 다른 컴퓨터는 제2 프로세서를 포함하며, 제1 프로세서와 제2 프로세서는 시스템 버스 인터페이스를 포함하고, 제1 프로세서의 시스템 버스 인터페이스는 시스템 버스를 이용하여 제2 프로세서의 시스템 버스 인터페이스에 연결되며, 다른 컴퓨터의 제2 메모리 어드레스 공간은 컴퓨터의 제1 메모리 어드레스 공간의 미러 어드레스 공간이다.
컴퓨터(1000)는 기록될 타깃 데이터 및 타깃 데이터의 기록 어드레스를 포함하는 기록 요청을 수신하도록 구성된, 수신 모듈(1010); 기록 어드레스가 제1 메모리 어드레스 공간에 위치하는 것으로 결정하도록 구성된(1020), 결정 모듈; 및 기록 요청의 타깃 데이터를 제1 메모리 어드레스 공간에 기록하고, 제2 프로세서가 타깃 데이터를 제2 메모리 어드레스 공간에 기록하도록, 시스템 버스를 이용하여 기록 요청의 타깃 데이터를 제2 프로세서로 전달하도록 구성된, 미러링 모듈(1030)를 포함한다.
본 발명의 본 실시 예에서, 2개의 상이한 컴퓨터들의 프로세서들은 시스템 버스를 사용하여 함께 연결된다. 시스템 버스는 종래 기술에서와 같은 다수의 DMA 작동을 필요로 하지 않거나 또는 복잡한 프로토콜 기반의 변환 없이, 기록될 데이터의 미러링 작동을 구현하는데 사용되며, 이는 미러링 작동 지연을 감소시키고 시스템의 IOPS 성능을 향상시킨다.
선택적으로, 일 실시 예로서, 미러링 모듈(1030)은, 구체적으로, 기록 요청에 따라, 타깃 데이터 및 기록 어드레스를 포함하는 미러 패킷을 생성하고; 미러 패킷을 제1 프로세서의 비-트랜스패런트 브리지로 전달하며; 제1 메모리 어드레스 공간과 제2 메모리 어드레스 공간 사이의 미러 관계에 따라, 미러 패킷의 기록 어드레스를 제2 메모리 어드레스 공간에서의 기록 어드레스의 미러 어드레스로 변환하여 업데이트된 미러 패킷을 획득하고; 그리고 제2 프로세스가 제2 프로세서의 비트랜스패턴트 브리지에 의해 수신된 업데이트된 미러 패킷에 따라 타깃 데이터를 미러 어드레스에 기록하도록, 시스템 버스를 이용하여 업데이트된 미러 패킷을 제2 프로세서의 비-트랜스패런트 브리지로 전달하도록 구성된다.
선택적으로, 일 실시 예로서, 미러링 모듈(1030)은, 추가로, 제1 프로세서의 비-트랜스패런트 브리지가 미리 설정된 시간 내에 제2 프로세서로부터 미러 완료 패킷을 수신한 후에, 미러 완료 패킷을 제1 프로세서로 전달하며; 그리고 미러 완료 패킷에 따라 타깃 데이터에 대한 미러링 작동의 성공을 확인하고, 미러링 작동에 대응하는 미러 트랜잭션을 종료하도록 구성되며, 미러 완료 패킷은 미러 패킷에 대응하고, 타깃 데이터가 미러 어드레스에 기록되었음을 지시하는 데 사용된다.
선택적으로, 일 실시 예로서, 미러링 모듈(1030)은, 추가로, 제1 프로세서의 비-트랜스패런트 브리지가 미리 설정된 시간 내에 제2 프로세서로부터 미러 완료 패킷을 수신하지 않은 경우, 미러 타임아웃 패킷을 제1 프로세서로 전달하고; 그리고 미러 타임아웃 패킷에 따라 미러링 작동의 실패를 확인하고, 미러 트랜잭션을 종료하도록 구성된다.
선택적으로, 일 실시 예로서, 미러링 모듈(1030)은, 추가로, 기록 요청에 따라, 타깃 데이터 및 기록 어드레스를 포함하는 미러 패킷을 생성하고; 그리고 미러 패킷을 제1 프로세서의 비-트랜스패런트 브리지로 전달하도록 구성되며, 제1 프로세서의 비-트랜스패런트 브리지는, 제2 프로세서의 비-트랜스패런트 브리지가 미러 패킷의 기록 어드레스를 제2 메모리 어드레스 공간에서의 기록 어드레스의 미러 어드레스로 변환하여 업데이트된 미러 패킷을 획득하고, 제2 프로세서는 업데이트된 미러 패킷에 따라 타깃 데이터를 미러 어드레스에 기록하도록, 시스템 버스를 이용하여 미러 패킷을 제2 프로세서의 비-트랜스패런트 브리지로 전달한다.
선택적으로, 일 실시 예로서, 미러링 모듈(1030)은, 구체적으로, 기록 요청에 따라 타깃 데이터에 대한 기록 패킷을 생성하고; 그리고 기록 패킷에 따라 타깃 데이터를 제1 메모리 어드레스 공간의 기록 어드레스에 기록하도록 구성된다.
선택적으로, 일 실시 예로서, 시스템 버스는 QPI 버스 또는 HT 버스이다.
도 11은 본 발명의 일 실시 예에 따른 컴퓨터의 개략적인 구조도이다. 도 11의 컴퓨터(1100)는 도 1 내지 도 7의 제2 컴퓨터에 대응하고, 제2 컴퓨터의 제2 프로세서에 의해 수행되는 모든 단계를 구현할 수 있다. 반복을 피하기 위해, 상세한 설명은 여기에서 다시 설명하지 않는다. 컴퓨터(1100)는 다른 컴퓨터에 연결되며, 각각의 운영 체제는 다른 컴퓨터 및 컴퓨터(1100)에서 각각 실행되고, 다른 컴퓨터는 제1 프로세서를 포함하며, 컴퓨터(1100)는 제2 프로세서를 포함하고, 제1 프로세서와 제2 프로세서는 시스템 버스 인터페이스를 포함하고, 제1 프로세서의 시스템 버스 인터페이스는 시스템 버스를 이용하여 제2 프로세서의 시스템 버스 인터페이스에 연결되며, 컴퓨터(1100)의 제2 메모리 어드레스 공간은 다른 컴퓨터의 제1 메모리 어드레스 공간의 미러 어드레스 공간이다.
컴퓨터(1100)는 시스템 버스를 이용하여 제1 프로세서로부터 타깃 데이터를 수신하도록 구성된, 미러링 모듈(1110); 및 타깃 데이터를 제2 메모리 어드레스 공간에 기록하도록 구성된, 기록 작동 모듈(1120)을 포함하고, 타깃 데이터는 제1 프로세서의 메모리에 기록될 데이터이고, 타깃 데이터의 기록 어드레스는 제1 메모리 어드레스 공간에 위치된다.
본 발명의 본 실시 예에서, 2개의 상이한 컴퓨터들의 프로세서들은 시스템 버스를 사용하여 함께 연결된다. 시스템 버스는 종래 기술에서와 같은 다수의 DMA 작동을 필요로 하지 않거나 또는 복잡한 프로토콜 기반의 변환 없이, 기록될 데이터의 미러링 작동을 구현하는데 사용되며, 이는 미러링 작동 지연을 감소시키고 시스템의 IOPS 성능을 향상시킨다.
선택적으로, 일 실시 예로서, 미러링 모듈(1110)은, 구체적으로, 시스템 버스를 이용하여 제1 프로세서로부터 미러 패킷을 수신하도록 구성되고, 미러 패킷은 타깃 데이터 및 제2 메모리 어드레스 공간에서의 기록 어드레스의 미러 어드레스를 포함하며, 기록 작동 모듈은, 구체적으로, 미러 패킷을 타깃 데이터에 대한 기록 패킷으로 변환하고, 컴퓨터의 메모리 컨트롤러를 이용하여 기록 패킷을 제2 메모리 어드레스 공간의 미러 어드레스에 기록하도록 구성된다.
선택적으로, 일 실시 예로서, 미러링 모듈(1110)은, 추가로, 메모리 컨트롤러로부터, 기록 패킷에 대응하며, 미러 어드레스를 포함하는 기록 완료 패킷을 수신하고; 제1 메모리 어드레스 공간과 제2 메모리 어드레스 공간 사이의 매핑 관계에 따라 미러 어드레스를 기록 어드레스로 변환하며; 그리고 미러 패킷에 대응하는 미러 완료 패킷을 제1 프로세서로 전달하도록 구성되며, 미러 완료 패킷은 기록 어드레스를 포함하고, 미러 완료 패킷은 타깃 데이터가 미러 어드레스에 기록되었음을 지시하는 데 사용된다.
선택적으로, 일 실시 예로서, 시스템 버스는 QPI 버스 또는 HT 버스이다.
당업자라면, 본 명세서에 개시된 실시 예들에서 설명된 예들과 결합하여, 유닛들 및 알고리즘 단계들이 전자 하드웨어 또는 컴퓨터 소프트웨어와 전자 하드웨어의 조합에 의해 구현될 수 있음을 인식할 수 있다. 기능이 하드웨어 또는 소프트웨어로 수행되는 지의 여부는 기술적 해결방안의 특정 애플리케이션 및 설계 제약 조건에 따라 다르다. 당업자는 각 특정 애플리케이션에 대해 기술된 기능을 구현하기 위해 상이한 방법을 사용할 수 있지만, 구현이 본 발명의 범위를 벗어나는 것으로 고려되어서는 안된다.
전술한 시스템, 장치 및 유닛의 상세한 작업 프로세스(working process)에 대한 편리하고 간단한 설명을 위해, 전술한 방법 실시 예에서 대응하는 프로세스가 참조될 수 있음이 당업자에 의해 명확하게 이해될 수 있으며, 상세한 설명은 본 명세서에서 다시 설명되지 않는다.
본 출원에 제공된 몇몇 실시 예에서, 개시된 시스템, 장치 및 방법은 다른 방식으로 구현될 수 있음을 이해해야 한다. 예를 들어, 설명된 장치 실시 예는 단지 예시적인 것이다. 예를 들어, 유닛 구분(division)은 논리적인 기능 구분일 뿐이며 실제 구현에서는 다른 구분일 수 있다. 예를 들어, 복수의 유닛 또는 구성 요소가 결합되거나 다른 시스템에 통합되거나, 일부 특징이 무시되거나 수행되지 않을 수 있다. 또한, 표시되거나 논의된 상호 커플링(coupling) 또는 직접 커플링 또는 통신 연결은 일부 인터페이스를 이용하여 구현될 수 있다. 장치 또는 유닛 간의 간접적 커플링 또는 통신 연결은 전자적, 기계적으로 또는 다른 형태로 구현될 수 있다.
분리된 부분들로 기술된 유닛들은 물리적으로 분리될 수도 있고 그렇지 않을 수도 있으며, 유닛들로서 디스플레이된 부분들은 물리적 유닛일 수도 있고 아닐 수도 있으며, 한 위치에 위치되거나 또는 복수의 네트워크 유닛 상에 분포될 수 있다. 유닛의 일부 또는 전부는 실시 예의 해결 방안의 목적을 달성하기 위해 실제 요구에 따라 선택될 수 있다.
또한, 본 발명의 실시 예에서의 기능 유닛은 하나의 처리 유닛에 통합되거나, 각각의 유닛이 물리적으로 단독으로 존재할 수도 있고, 또는 둘 이상의 유닛이 하나의 유닛으로 통합될 수도 있다.
기능들이 소프트웨어 기능 유닛의 형태로 구현되고 독립적인 제품으로서 판매되거나 사용되는 경우, 기능들은 컴퓨터 판독 가능 저장 매체에 저장될 수 있다. 이러한 이해에 기초하여, 본질적으로 본 발명의 기술적인 해결 방안 또는 종래 기술에 기여하는 부분 또는 기술적 해결 방안의 일부는 소프트웨어 제품의 형태로 구현될 수 있다. 컴퓨터 소프트웨어 제품은 저장 매체에 저장되며, 컴퓨터 장치(개인용 컴퓨터, 서버, 네트워크 장치 등일 수 있음)가 본 발명의 실시 예에 기술된 방법의 단계들의 전부 또는 일부를 수행하도록 명령하기 위한 몇 가지 명령을 포함한다, 전술한 저장 매체는 USB 플래시 드라이브, 탈착식 하드 디스크, 판독 전용 메모리(ROM, Read-Only Memory), 랜덤 액세스 메모리(RAM, Random Access Memory), 자기 디스크 또는 광 디스크와 같은 프로그램 코드를 저장할 수 있는 임의의 매체를 포함한다.
전술한 설명은 본 발명의 특정 구현 방식일 뿐이며, 본 발명의 보호 범위를 한정하려는 것은 아니다. 본 발명에 개시된 기술적 범위 내에서 당업자에 의해 용이하게 이해되는 임의의 변형(variation) 또는 치환(replacement)은 본 발명의 보호 범위 내에 속한다. 따라서, 본 발명의 보호 범위는 청구 범위의 보호 범위의 대상이 된다.

Claims (36)

  1. 제1 컴퓨터에 적용되는 기록 요청(write request) 처리 방법으로서,
    상기 제1 컴퓨터가 제2 컴퓨터에 연결되고, 각각의 운영 체제가 상기 제1 컴퓨터 및 상기 제2 컴퓨터에서 각각 실행되며, 상기 제1 컴퓨터는 제1 프로세서를 포함하고, 상기 제2 컴퓨터는 제2 프로세서를 포함하며, 상기 제1 프로세서와 상기 제2 프로세서는 시스템 버스 인터페이스를 포함하고, 상기 제1 프로세서의 시스템 버스 인터페이스는 시스템 버스를 이용하여 상기 제2 프로세서의 시스템 버스 인터페이스에 연결되며, 상기 제2 컴퓨터의 제2 메모리 어드레스 공간(space)은 상기 제1 컴퓨터의 제1 메모리 어드레스 공간의 미러(mirror) 어드레스 공간이고,
    상기 기록 요청 처리 방법은,
    상기 제1 프로세서가, 기록 요청을 수신하는 단계 - 상기 기록 요청은 기록될 타깃(target) 데이터 및 상기 타깃 데이터의 기록 어드레스를 포함함 -;
    상기 제1 프로세서가, 상기 기록 어드레스가 상기 제1 메모리 어드레스 공간에 위치하는 것으로 결정하는 단계; 및
    상기 제1 프로세서가, 상기 기록 요청의 타깃 데이터를 상기 제1 메모리 어드레스 공간에 기록하고, 상기 제2 프로세서가 상기 타깃 데이터를 상기 제2 메모리 어드레스 공간에 기록하도록, 상기 시스템 버스를 이용하여 상기 기록 요청의 타깃 데이터를 상기 제2 프로세서로 전달하는 단계
    를 포함하는, 기록 요청 처리 방법.
  2. 제1항에 있어서,
    상기 시스템 버스를 이용하여 상기 기록 요청의 타깃 데이터를 상기 제2 프로세서로 전달하는 단계는,
    상기 제1 프로세서가, 상기 기록 요청에 따라 미러 패킷을 생성하는 단계 - 상기 미러 패킷은 상기 타깃 데이터 및 상기 기록 어드레스를 포함함 -;
    상기 제1 프로세서가, 상기 미러 패킷을 상기 제1 프로세서의 비-트랜스패런트 브리지(non-transparent bridge)로 전달하는 단계;
    상기 제1 프로세서의 비-트랜스패런트 브리지가, 상기 제1 메모리 어드레스 공간과 상기 제2 메모리 어드레스 공간 사이의 미러 관계에 따라, 상기 미러 패킷의 상기 기록 어드레스를 상기 제2 메모리 어드레스 공간에서의 상기 기록 어드레스의 미러 어드레스로 변환하여 업데이트된 미러 패킷을 획득하는 단계; 및
    상기 제2 프로세서가 상기 제2 프로세서의 비-트랜스패런트 브리지에 의해 수신된 상기 업데이트된 미러 패킷에 따라 상기 타깃 데이터를 상기 미러 어드레스에 기록하도록, 상기 제1 프로세서의 비-트랜스패런트 브리지가, 상기 시스템 버스를 이용하여 상기 업데이트된 미러 패킷을 상기 제2 프로세서의 비-트랜스패런트 브리지로 전달하는 단계
    를 포함하는, 기록 요청 처리 방법.
  3. 제2항에 있어서,
    상기 제1 프로세서의 비-트랜스패런트 브리지가 미리 설정된 시간 내에 상기 제2 프로세서로부터 미러 완료(completion) 패킷을 수신한 후에, 상기 제1 프로세서의 비-트랜스패런트 브리지가 상기 미러 완료 패킷을 상기 제1 프로세서에 전달하는 단계; 및
    상기 제1 프로세서가, 상기 미러 완료 패킷에 따라 상기 타깃 데이터에 대한 미러링(mirroring) 작동(operation)의 성공을 확인하고, 상기 미러링 작동에 대응하는 미러 트랜잭션(transaction)을 종료하는 단계
    를 더 포함하며,
    상기 미러 완료 패킷은 상기 미러 패킷에 대응하고, 상기 타깃 데이터가 상기 미러 어드레스에 기록되었음을 지시하는 데 사용되는, 기록 요청 처리 방법.
  4. 제3항에 있어서,
    상기 제1 프로세서의 비-트랜스패런트 브리지가 상기 미리 설정된 시간 내에 상기 제2 프로세서로부터 상기 미러 완료 패킷을 수신하지 않은 경우, 상기 제1 프로세서의 비-트랜스패런트 브리지가, 미러 타임아웃(timeout) 패킷을 상기 제1 프로세서에 전달하는 단계; 및
    상기 제1 프로세서가, 상기 미러 타임아웃 패킷에 따라 상기 미러링 작동의 실패를 확인하고, 상기 미러 트랜잭션을 종료하는 단계
    를 더 포함하는 기록 요청 처리 방법.
  5. 제1항에 있어서,
    상기 시스템 버스를 이용하여 상기 기록 요청의 타깃 데이터를 상기 제2 프로세서로 전달하는 단계는,
    상기 제1 프로세서가, 상기 기록 요청에 따라 미러 패킷을 생성하는 단계 - 상기 미러 패킷은 상기 타깃 데이터 및 상기 기록 어드레스를 포함함 -; 및
    상기 제1 프로세서가, 상기 미러 패킷을 상기 제1 프로세서의 비-트랜스패런트 브리지로 전달하는 단계
    를 더 포함하고,
    상기 제2 프로세서의 비-트랜스패런트 브리지가 상기 미러 패킷의 기록 어드레스를 상기 제2 메모리 어드레스 공간에서의 상기 기록 어드레스의 미러 어드레스로 변환하여 업데이트된 미러 패킷을 획득하고, 상기 제2 프로세서는 상기 업데이트된 미러 패킷에 따라 타깃 데이터를 상기 미러 어드레스에 기록하도록, 상기 제1 프로세서의 비-트랜스패런트 브리지가 상기 시스템 버스를 이용하여 상기 미러 패킷을 상기 제2 프로세서의 비-트랜스패런트 브리지로 전달하는, 기록 요청 처리 방법.
  6. 제1항 내지 제5항 중 어느 한 항에 있어서,
    상기 제1 프로세서가, 상기 기록 요청의 타깃 데이터를 상기 제1 메모리 어드레스 공간에 기록하는 것은,
    상기 제1 프로세서가, 상기 기록 요청에 따라 상기 타깃 데이터에 대한 기록 패킷을 생성하는 단계; 및
    상기 제1 프로세서가, 상기 기록 패킷에 따라 상기 타깃 데이터를 상기 제1 메모리 어드레스 공간의 상기 기록 어드레스에 기록하는 단계
    를 포함하는, 기록 요청 처리 방법.
  7. 제1항 내지 제6항 중 어느 한 항에 있어서,
    상기 시스템 버스는 QPI(quick path interconnect) 버스 또는 HT(HyperTransport) 버스인, 기록 요청 처리 방법.
  8. 제1 컴퓨터에 연결된 제2 컴퓨터에 적용되는 기록 요청 처리 방법으로서,
    각각의 운영 체제가 상기 제1 컴퓨터 및 상기 제2 컴퓨터에서 각각 실행되며, 상기 제1 컴퓨터는 제1 프로세서를 포함하고, 상기 제2 컴퓨터는 제2 프로세서를 포함하며, 상기 제1 프로세서와 상기 제2 프로세서는 시스템 버스 인터페이스를 포함하고, 상기 제1 프로세서의 시스템 버스 인터페이스는 시스템 버스를 이용하여 상기 제2 프로세서의 시스템 버스 인터페이스에 연결되며, 상기 제2 컴퓨터의 제2 메모리 어드레스 공간은 상기 제1 컴퓨터의 제1 메모리 어드레스 공간의 미러 어드레스 공간이고,
    상기 기록 요청 처리 방법은,
    상기 제2 프로세서가, 상기 시스템 버스를 이용하여 상기 제1 프로세서로부터 타깃 데이터를 수신하는 단계; 및
    상기 제2 프로세서가, 상기 타깃 데이터를 상기 제2 메모리 어드레스 공간에 기록하는 단계
    를 포함하고,
    상기 타깃 데이터는 상기 제1 프로세서의 메모리에 기록될 데이터이고, 상기 타깃 데이터의 기록 어드레스는 상기 제1 메모리 어드레스 공간에 위치되는, 기록 요청 처리 방법.
  9. 제8항에 있어서,
    상기 제2 프로세서가, 상기 시스템 버스를 이용하여 상기 제1 프로세서로부터 타깃 데이터를 수신하는 단계는,
    상기 제2 프로세서의 비-트랜스패런트 브리지가, 상기 시스템 버스를 이용하여 상기 제1 프로세서로부터 미러 패킷을 수신하는 단계
    를 포함하고, 상기 미러 패킷은 상기 타깃 데이터 및 상기 제2 메모리 어드레스 공간에서의 상기 기록 어드레스의 미러 어드레스를 포함하며,
    상기 제2 프로세서가, 상기 타깃 데이터를 상기 제2 메모리 어드레스 공간에 기록하는 단계는,
    상기 제2 프로세서의 비-트랜스패런트 브리지가, 상기 미러 패킷을 상기 타깃 데이터에 대한 기록 패킷으로 변환하는 단계; 및
    상기 제2 프로세서의 비-트랜스패런트 브리지가, 상기 제2 컴퓨터의 메모리 컨트롤러를 이용하여 상기 기록 패킷을 상기 제2 메모리 어드레스 공간의 상기 미러 어드레스에 기록하는 단계
    를 포함하는, 기록 요청 처리 방법.
  10. 제9항에 있어서,
    상기 제2 프로세서의 비-트랜스패런트 브리지가, 상기 메모리 컨트롤러로부터 상기 기록 패킷에 대응하는 기록 완료 패킷을 수신하는 단계 - 상기 기록 완료 패킷은 상기 미러 어드레스를 포함함 -;
    상기 제2 프로세서의 비-트랜스패런트 브리지가, 상기 제1 메모리 어드레스 공간과 상기 제2 메모리 어드레스 공간 사이의 매핑 관계에 따라 상기 미러 어드레스를 상기 기록 어드레스로 변환하는 단계; 및
    상기 제2 프로세서의 비-트랜스패런트 브리지가, 상기 미러 패킷에 대응하는 미러 완료 패킷을 상기 제1 프로세서로 전달하는 단계
    를 더 포함하고,
    상기 미러 완료 패킷은 상기 기록 어드레스를 포함하고, 상기 미러 완료 패킷은 상기 타깃 데이터가 상기 미러 어드레스에 기록되었음을 지시하는 데 사용되는, 기록 요청 처리 방법.
  11. 제8항에 있어서,
    상기 제2 프로세서가, 상기 시스템 버스를 이용하여 상기 제1 프로세서로부터 타깃 데이터를 수신하는 단계는,
    상기 제2 프로세서의 비-트랜스패런트 브리지가, 상기 시스템 버스를 이용하여 상기 제1 프로세서로부터 미러 패킷을 수신하는 단계
    를 포함하고, 상기 미러 패킷은 상기 타깃 데이터 및 상기 기록 어드레스를 포함하며,
    상기 제2 프로세서가, 상기 타깃 데이터를 상기 제2 메모리 어드레스 공간에 기록하는 단계는,
    상기 제2 프로세서의 비-트랜스패런트 브리지가, 상기 미러 패킷을 상기 타깃 데이터에 대한 기록 패킷으로 변환하고, 상기 기록 어드레스를 상기 제2 메모리 어드레스 공간에서의 상기 기록 어드레스의 미러 어드레스로 변환하는 단계; 및
    상기 제2 프로세서의 비-트랜스패런트 브리지가, 상기 제2 컴퓨터의 메모리 컨트롤러를 이용하여 상기 기록 패킷을 상기 제2 메모리 어드레스 공간의 상기 미러 어드레스에 기록하는 단계
    를 포함하는, 기록 요청 처리 방법.
  12. 제8항 내지 제11항 중 어느 한 항에 있어서,
    상기 시스템 버스는 QPI(quick path interconnect) 버스 또는 HT(HyperTransport) 버스인, 기록 요청 처리 방법.
  13. 프로세서로서,
    상기 프로세서가 제1 컴퓨터에 위치되며, 상기 제1 컴퓨터가 제2 컴퓨터에 연결되고, 각각의 운영 체제가 상기 제1 컴퓨터 및 상기 제2 컴퓨터에서 각각 실행되며, 상기 제2 컴퓨터는 다른 프로세서를 포함하며, 상기 프로세서와 상기 다른 프로세서는 시스템 버스 인터페이스를 포함하고, 상기 프로세서의 시스템 버스 인터페이스는 시스템 버스를 이용하여 상기 다른 프로세서의 시스템 버스 인터페이스에 연결되며, 상기 제2 컴퓨터의 제2 메모리 어드레스 공간은 상기 제1 컴퓨터의 제1 메모리 어드레스 공간의 미러 어드레스 공간이고,
    상기 프로세서는,
    컨트롤러; 및
    내부 버스
    를 더 포함하며,
    상기 컨트롤러는 상기 내부 버스를 이용하여 상기 프로세서의 상기 시스템 버스 인터페이스에 연결되며,
    상기 컨트롤러는, 기록될 타깃 데이터와 상기 타깃 데이터의 기록 어드레스를 포함하는 기록 요청을 수신하고; 상기 기록 어드레스가 상기 제1 메모리 어드레스 공간에 위치하는 것으로 결정하며; 그리고 상기 기록 요청의 타깃 데이터를 상기 제1 메모리 어드레스 공간에 기록하고, 상기 다른 프로세서가 상기 타깃 데이터를 상기 제2 메모리 어드레스 공간에 기록하도록, 상기 시스템 버스를 이용하여 상기 기록 요청의 타깃 데이터를 상기 다른 프로세서로 전달하도록 구성되는, 프로세서.
  14. 제13항에 있어서,
    상기 프로세서는,
    비-트랜스패런트 브리지
    를 더 포함하고,
    상기 비-트랜스패런트 브리지가 상기 시스템 버스 인터페이스에 연결되고, 상기 비-트랜스패런트 브리지는 상기 내부 버스를 이용하여 상기 컨트롤러에 연결되며,
    상기 컨트롤러는, 구체적으로, 상기 기록 요청에 따라 미러 패킷을 생성하도록 구성되며, 상기 미러 패킷은 상기 타깃 데이터 및 상기 기록 어드레스를 포함하고,
    상기 비-트랜스패런트 브리지가,
    상기 제1 메모리 어드레스 공간과 상기 제2 메모리 어드레스 공간 사이의 미러 관계에 따라, 상기 미러 패킷의 상기 기록 어드레스를 상기 제2 메모리 어드레스 공간에서의 상기 기록 어드레스의 미러 어드레스로 변환하여 업데이트된 미러 패킷을 획득하고; 그리고
    상기 다른 프로세스가 상기 다른 프로세서의 비트랜스패턴트 브리지에 의해 수신된 상기 업데이트된 미러 패킷에 따라 상기 타깃 데이터를 상기 미러 어드레스에 기록하도록, 상기 시스템 버스를 이용하여 상기 업데이트된 미러 패킷을 상기 다른 프로세서의 비-트랜스패런트 브리지로 전달하도록 구성되는, 프로세서.
  15. 제14항에 있어서,
    상기 비-트랜스패런트 브리지는, 추가로,
    미리 설정된 시간 내에 상기 다른 프로세서로부터 미러 완료 패킷을 수신한 후에, 상기 미러 완료 패킷을 상기 컨트롤러로 전달하도록 구성되며,
    상기 미러 완료 패킷은 상기 미러 패킷에 대응하고, 상기 타깃 데이터가 상기 미러 어드레스에 기록되었음을 지시하는 데 사용되고,
    상기 컨트롤러는, 추가로,
    상기 미러 완료 패킷에 따라 상기 타깃 데이터에 대한 미러링 작동의 성공을 확인하고, 상기 미러링 작동에 대응하는 미러 트랜잭션을 종료하도록 구성되는, 프로세서.
  16. 제15항에 있어서,
    상기 비-트랜스패런트 브리지는, 추가로,
    상기 미러 완료 패킷이 상기 미리 설정된 시간 내에 상기 다른 프로세서로부터 수신되지 않은 경우, 미러 타임아웃 패킷을 상기 컨트롤러로 전달하도록 구성되고,
    상기 컨트롤러가, 추가로,
    상기 미러 타임아웃 패킷에 따라 상기 미러링 작동의 실패를 확인하고, 상기 미러 트랜잭션을 종료하도록 구성되는, 프로세서.
  17. 제13항에 있어서,
    상기 컨트롤러는, 구체적으로,
    상기 기록 요청에 따라, 상기 타깃 데이터 및 상기 기록 어드레스를 포함하는 미러 패킷을 생성하고; 그리고
    상기 미러 패킷을 상기 프로세서의 비-트랜스패런트 브리지로 전달하도록 구성되며,
    상기 프로세서의 비-트랜스패런트 브리지는,
    상기 다른 프로세서의 비-트랜스패런트 브리지가 상기 미러 패킷의 기록 어드레스를 상기 제2 메모리 어드레스 공간에서의 상기 기록 어드레스의 미러 어드레스로 변환하여 업데이트된 미러 패킷을 획득하고, 상기 다른 프로세서는 상기 업데이트된 미러 패킷에 따라 상기 타깃 데이터를 상기 미러 어드레스에 기록하도록, 상기 시스템 버스를 이용하여 상기 미러 패킷을 상기 다른 프로세서의 비-트랜스패런트 브리지로 전달하는, 프로세서.
  18. 제13항 내지 제17항 중 어느 한 항에 있어서,
    상기 컨트롤러가, 구체적으로,
    상기 기록 요청에 따라 상기 타깃 데이터에 대한 기록 패킷을 생성하고; 그리고
    상기 기록 패킷에 따라 상기 타깃 데이터를 상기 제1 메모리 어드레스 공간의 상기 기록 어드레스에 기록하도록 구성되는, 프로세서.
  19. 제13항 내지 제18항 중 어느 한 항에 있어서,
    상기 시스템 버스는 QPI(quick path interconnect) 버스 또는 HT(HyperTransport) 버스인, 프로세서.
  20. 프로세서로서,
    상기 프로세서는 제1 컴퓨터에 연결된 제2 컴퓨터에 위치되고, 각각의 운영 체제가 상기 제1 컴퓨터 및 상기 제2 컴퓨터에서 각각 실행되며, 상기 제1 컴퓨터는 다른 프로세서를 포함하고, 상기 다른 프로세서와 상기 프로세서는 시스템 버스 인터페이스를 포함하고, 상기 다른 프로세서의 시스템 버스 인터페이스는 시스템 버스를 이용하여 상기 프로세서의 시스템 버스 인터페이스에 연결되며, 상기 제2 컴퓨터의 제2 메모리 어드레스 공간은 상기 제1 컴퓨터의 제1 메모리 어드레스 공간의 미러 어드레스 공간이고,
    상기 프로세서는,
    컨트롤러;
    비-트랜스패런트 브리지; 및
    내부 버스
    를 포함하고,
    상기 비-트랜스패런트 브리지는 상기 프로세서의 상기 시스템 버스 인터페이스에 연결되고, 상기 컨트롤러는 상기 내부 버스를 이용하여 상기 비-트랜스패런트 브리지에 연결되며,
    상기 비-트랜스패런트 브리지는, 상기 시스템 버스를 이용하여 상기 다른 프로세서로부터 타깃 데이터를 수신하고, 상기 타깃 데이터를 상기 제2 메모리 어드레스 공간에 기록하도록 구성되며,
    상기 타깃 데이터는 상기 다른 프로세서의 메모리에 기록될 데이터이고, 상기 타깃 데이터의 기록 어드레스는 상기 제1 메모리 어드레스 공간에 위치되는, 프로세서.
  21. 제20항에 있어서,
    상기 비-트랜스패런트 브리지는, 구체적으로,
    상기 시스템 버스를 이용하여 상기 다른 프로세서로부터, 상기 타깃 데이터 및 상기 제2 메모리 어드레스 공간에서의 상기 기록 어드레스의 미러 어드레스를 포함하는 미러 패킷을 수신하고;
    상기 미러 패킷을 상기 타깃 데이터에 대한 기록 패킷으로 변환하고; 그리고
    상기 제2 컴퓨터의 메모리 컨트롤러를 이용하여 상기 기록 패킷을 상기 제2 메모리 어드레스 공간의 상기 미러 어드레스에 기록하도록 구성되는, 프로세서.
  22. 제21항에 있어서,
    상기 비-트랜스패런트 브리지는, 추가로
    상기 메모리 컨트롤러로부터, 상기 기록 패킷에 대응하며, 상기 미러 어드레스를 포함하는 기록 완료 패킷을 수신하고;
    상기 제1 메모리 어드레스 공간과 상기 제2 메모리 어드레스 공간 사이의 매핑 관계에 따라 상기 미러 어드레스를 상기 기록 어드레스로 변환하며; 그리고
    상기 미러 패킷에 대응하는 미러 완료 패킷을 상기 다른 프로세서로 전달하도록 구성되며,
    상기 미러 완료 패킷은 상기 기록 어드레스를 포함하고, 상기 미러 완료 패킷은 상기 타깃 데이터가 상기 미러 어드레스에 기록되었음을 지시하는 데 사용되는, 프로세서.
  23. 제20항에 있어서,
    상기 비-트랜스패런트 브리지는, 구체적으로,
    상기 시스템 버스를 이용하여 상기 다른 프로세서로부터, 상기 타깃 데이터 및 상기 기록 어드레스를 포함하는 미러 패킷을 수신하고;
    상기 미러 패킷을 상기 타깃 데이터에 대한 기록 패킷으로 변환하고, 상기 기록 어드레스를 상기 제2 메모리 어드레스 공간에서의 상기 기록 어드레스의 미러 어드레스로 변환하며; 그리고
    상기 제2 컴퓨터의 메모리 컨트롤러를 이용하여 상기 기록 패킷을 상기 제2 메모리 어드레스 공간의 상기 미러 어드레스에 기록하도록 구성되는, 프로세서.
  24. 제20항 내지 제23항 중 어느 한 항에 있어서,
    상기 시스템 버스는 QPI(quick path interconnect) 버스 또는 HT(HyperTransport) 버스인, 프로세서.
  25. 컴퓨터로서,
    상기 컴퓨터가 다른 컴퓨터에 연결되고, 각각의 운영 체제가 상기 컴퓨터 및 상기 다른 컴퓨터에서 각각 실행되며, 상기 컴퓨터는 제1 프로세서를 포함하고, 상기 다른 컴퓨터는 제2 프로세서를 포함하며, 상기 제1 프로세서와 상기 제2 프로세서는 시스템 버스 인터페이스를 포함하고, 상기 제1 프로세서의 시스템 버스 인터페이스는 시스템 버스를 이용하여 상기 제2 프로세서의 시스템 버스 인터페이스에 연결되며, 상기 다른 컴퓨터의 제2 메모리 어드레스 공간은 상기 컴퓨터의 제1 메모리 어드레스 공간의 미러 어드레스 공간이고,
    상기 컴퓨터는,
    기록될 타깃 데이터 및 상기 타깃 데이터의 기록 어드레스를 포함하는 기록 요청을 수신하도록 구성된, 수신 모듈;
    상기 기록 어드레스가 상기 제1 메모리 어드레스 공간에 위치하는 것으로 결정하도록 구성된, 결정 모듈; 및
    상기 기록 요청의 타깃 데이터를 상기 제1 메모리 어드레스 공간에 기록하고, 상기 제2 프로세서가 상기 타깃 데이터를 상기 제2 메모리 어드레스 공간에 기록하도록, 상기 시스템 버스를 이용하여 상기 기록 요청의 타깃 데이터를 상기 제2 프로세서로 전달하도록 구성된, 미러링 모듈
    을 포함하는, 컴퓨터.
  26. 제25항에 있어서,
    상기 미러링 모듈은, 구체적으로,
    상기 기록 요청에 따라, 상기 타깃 데이터 및 상기 기록 어드레스를 포함하는 미러 패킷을 생성하고;
    상기 미러 패킷을 상기 제1 프로세서의 비-트랜스패런트 브리지로 전달하며;
    상기 제1 메모리 어드레스 공간과 상기 제2 메모리 어드레스 공간 사이의 미러 관계에 따라, 상기 미러 패킷의 상기 기록 어드레스를 상기 제2 메모리 어드레스 공간에서의 상기 기록 어드레스의 미러 어드레스로 변환하여 업데이트된 미러 패킷을 획득하고; 그리고
    상기 제2 프로세스가 상기 제2 프로세서의 비트랜스패턴트 브리지에 의해 수신된 상기 업데이트된 미러 패킷에 따라 상기 타깃 데이터를 상기 미러 어드레스에 기록하도록, 상기 시스템 버스를 이용하여 상기 업데이트된 미러 패킷을 상기 제2 프로세서의 비-트랜스패런트 브리지로 전달하도록 구성되는, 컴퓨터.
  27. 제26항에 있어서,
    상기 미러링 모듈은 추가로,
    상기 제1 프로세서의 비-트랜스패런트 브리지가 미리 설정된 시간 내에 상기 제2 프로세서로부터 미러 완료 패킷을 수신한 후에, 상기 미러 완료 패킷을 상기 제1 프로세서로 전달하며; 그리고
    상기 미러 완료 패킷에 따라 상기 타깃 데이터에 대한 미러링 작동의 성공을 확인하고, 상기 미러링 작동에 대응하는 미러 트랜잭션을 종료하도록 구성되며,
    상기 미러 완료 패킷은 상기 미러 패킷에 대응하고, 상기 타깃 데이터가 상기 미러 어드레스에 기록되었음을 지시하는 데 사용되는, 컴퓨터.
  28. 제27항에 있어서,
    상기 미러링 모듈은 추가로,
    상기 제1 프로세서의 비-트랜스패런트 브리지가 상기 미리 설정된 시간 내에 상기 제2 프로세서로부터 상기 미러 완료 패킷을 수신하지 않은 경우, 미러 타임아웃 패킷을 상기 제1 프로세서로 전달하고; 그리고
    상기 미러 타임아웃 패킷에 따라 상기 미러링 작동의 실패를 확인하고, 상기 미러 트랜잭션을 종료하도록 구성되는, 컴퓨터.
  29. 제25항에 있어서,
    상기 미러링 모듈은 추가로,
    상기 기록 요청에 따라, 상기 타깃 데이터 및 상기 기록 어드레스를 포함하는 미러 패킷을 생성하고; 그리고
    상기 미러 패킷을 상기 제1 프로세서의 비-트랜스패런트 브리지로 전달하도록 구성되며,
    상기 제1 프로세서의 비-트랜스패런트 브리지는,
    상기 제2 프로세서의 비-트랜스패런트 브리지가 상기 미러 패킷의 기록 어드레스를 상기 제2 메모리 어드레스 공간에서의 상기 기록 어드레스의 미러 어드레스로 변환하여 업데이트된 미러 패킷을 획득하고, 상기 제2 프로세서는 상기 업데이트된 미러 패킷에 따라 상기 타깃 데이터를 상기 미러 어드레스에 기록하도록, 상기 시스템 버스를 이용하여 상기 미러 패킷을 상기 제2 프로세서의 비-트랜스패런트 브리지로 전달하는, 컴퓨터.
  30. 제25항 내지 제29항 중 어느 한 항에 있어서,
    상기 미러링 모듈은 구체적으로,
    상기 기록 요청에 따라 상기 타깃 데이터에 대한 기록 패킷을 생성하고; 그리고
    상기 기록 패킷에 따라 상기 타깃 데이터를 상기 제1 메모리 어드레스 공간의 상기 기록 어드레스에 기록하도록 구성되는, 컴퓨터.
  31. 제25항 내지 제30항 중 어느 한 항에 있어서,
    상기 시스템 버스는 QPI(quick path interconnect) 버스 또는 HT(HyperTransport) 버스인, 컴퓨터.
  32. 컴퓨터로서,
    상기 컴퓨터는 다른 컴퓨터에 연결되고, 각각의 운영 체제가 상기 다른 컴퓨터 및 상기 컴퓨터에서 각각 실행되며, 상기 다른 컴퓨터는 제1 프로세서를 포함하고, 상기 컴퓨터는 제2 프로세서를 포함하며, 상기 제1 프로세서와 상기 제2 프로세서는 시스템 버스 인터페이스를 포함하고, 상기 제1 프로세서의 시스템 버스 인터페이스는 시스템 버스를 이용하여 상기 제2 프로세서의 시스템 버스 인터페이스에 연결되며, 상기 컴퓨터의 제2 메모리 어드레스 공간은 상기 다른 컴퓨터의 제1 메모리 어드레스 공간의 미러 어드레스 공간이고,
    상기 컴퓨터는,
    상기 시스템 버스를 이용하여 상기 제1 프로세서로부터 타깃 데이터를 수신하도록 구성된, 미러링 모듈; 및
    상기 타깃 데이터를 상기 제2 메모리 어드레스 공간에 기록하도록 구성된, 기록 작동 모듈
    을 포함하고,
    상기 타깃 데이터는 상기 제1 프로세서의 메모리에 기록될 데이터이고, 상기 타깃 데이터의 기록 어드레스는 상기 제1 메모리 어드레스 공간에 위치되는, 컴퓨터.
  33. 제32항에 있어서,
    상기 미러링 모듈은, 구체적으로,
    상기 시스템 버스를 이용하여 상기 제1 프로세서로부터 미러 패킷을 수신하도록 구성되고,
    상기 미러 패킷은 상기 타깃 데이터 및 상기 제2 메모리 어드레스 공간에서의 상기 기록 어드레스의 미러 어드레스를 포함하며,
    상기 기록 작동 모듈은, 구체적으로,
    상기 미러 패킷을 상기 타깃 데이터에 대한 기록 패킷으로 변환하고, 상기 컴퓨터의 메모리 컨트롤러를 이용하여 상기 기록 패킷을 상기 제2 메모리 어드레스 공간의 상기 미러 어드레스에 기록하도록 구성되는, 컴퓨터.
  34. 제33항에 있어서,
    상기 미러링 모듈은 추가로
    상기 메모리 컨트롤러로부터, 상기 기록 패킷에 대응하며, 상기 미러 어드레스를 포함하는 기록 완료 패킷을 수신하고;
    상기 제1 메모리 어드레스 공간과 상기 제2 메모리 어드레스 공간 사이의 매핑 관계에 따라 상기 미러 어드레스를 상기 기록 어드레스로 변환하며; 그리고
    상기 미러 패킷에 대응하는 미러 완료 패킷을 상기 제1 프로세서로 전달하도록 구성되며,
    상기 미러 완료 패킷은 상기 기록 어드레스를 포함하고, 상기 미러 완료 패킷은 상기 타깃 데이터가 상기 미러 어드레스에 기록되었음을 지시하는 데 사용되는, 컴퓨터.
  35. 제32항에 있어서,
    상기 미러링 모듈은, 구체적으로,
    상기 시스템 버스를 이용하여 상기 제1 프로세서로부터, 상기 타깃 데이터 및 상기 기록 어드레스를 포함하는 미러 패킷을 수신하도록 구성되고,
    상기 기록 작동 모듈은, 구체적으로,
    상기 미러 패킷을 상기 타깃 데이터에 대한 기록 패킷으로 변환하고, 상기 기록 어드레스를 상기 제2 메모리 어드레스 공간에서의 상기 기록 어드레스의 미러 어드레스로 변환하며; 그리고
    상기 제2 컴퓨터의 메모리 컨트롤러를 이용하여 상기 기록 패킷을 상기 제2 메모리 어드레스 공간의 상기 미러 어드레스에 기록하도록 구성되는, 컴퓨터.
  36. 제32항 내지 제35항 중 어느 한 항에 있어서,
    상기 시스템 버스는 QPI(quick path interconnect) 버스 또는 HT(HyperTransport) 버스인, 컴퓨터.
KR1020177011796A 2015-12-17 2015-12-17 기록 요청 처리 방법, 프로세서, 그리고 컴퓨터 KR20170086484A (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2015/097742 WO2017101080A1 (zh) 2015-12-17 2015-12-17 处理写请求的方法、处理器和计算机

Publications (1)

Publication Number Publication Date
KR20170086484A true KR20170086484A (ko) 2017-07-26

Family

ID=59055462

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020177011796A KR20170086484A (ko) 2015-12-17 2015-12-17 기록 요청 처리 방법, 프로세서, 그리고 컴퓨터

Country Status (11)

Country Link
US (1) US20170220255A1 (ko)
EP (1) EP3211535A4 (ko)
JP (1) JP2018503156A (ko)
KR (1) KR20170086484A (ko)
CN (1) CN107209725A (ko)
AU (1) AU2015411096A1 (ko)
BR (1) BR112017008674A2 (ko)
CA (1) CA2963915A1 (ko)
RU (1) RU2017118316A (ko)
SG (1) SG11201702806UA (ko)
WO (1) WO2017101080A1 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109491587B (zh) * 2017-09-11 2021-03-23 华为技术有限公司 数据访问的方法及装置
CN109462497B (zh) * 2018-10-22 2022-07-29 杭州迪普科技股份有限公司 传输管理数据的方法、装置、设备及存储介质
CN111813707B (zh) * 2020-07-17 2023-12-22 济南浪潮数据技术有限公司 一种数据同步方法、装置、设备及存储介质
CN112835519B (zh) * 2021-01-29 2023-03-14 杭州海康威视数字技术股份有限公司 一种数据读取方法、装置、电子设备及存储介质
CN114095584A (zh) * 2021-11-29 2022-02-25 重庆忽米网络科技有限公司 工业设备数据的模型转换与构建方法及可读存储介质
CN115543636B (zh) * 2022-11-29 2023-03-21 苏州浪潮智能科技有限公司 一种多控制器的数据备份方法及相关装置

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5765196A (en) * 1996-02-27 1998-06-09 Sun Microsystems, Inc. System and method for servicing copyback requests in a multiprocessor system with a shared memory
US6944719B2 (en) * 2002-05-15 2005-09-13 Broadcom Corp. Scalable cache coherent distributed shared memory processing system
US20060212644A1 (en) * 2005-03-21 2006-09-21 Acton John D Non-volatile backup for data cache
US8839268B2 (en) * 2008-02-07 2014-09-16 Oracle America, Inc. Method and system of preventing silent data corruption
US9032101B1 (en) * 2008-12-10 2015-05-12 Nvidia Corporation Chipset support for binding and migrating hardware devices among heterogeneous processing units
US8375184B2 (en) * 2009-11-30 2013-02-12 Intel Corporation Mirroring data between redundant storage controllers of a storage system
US20110238909A1 (en) * 2010-03-29 2011-09-29 Pankaj Kumar Multicasting Write Requests To Multiple Storage Controllers
US8751714B2 (en) * 2010-09-24 2014-06-10 Intel Corporation Implementing quickpath interconnect protocol over a PCIe interface
JP5956565B2 (ja) * 2011-05-16 2016-07-27 オラクル・インターナショナル・コーポレイション メッセージングアプリケーションプログラムインターフェイスを提供するためのシステムおよび方法
JP5833756B2 (ja) * 2012-03-23 2015-12-16 株式会社日立製作所 二重化共有メモリアクセス方法と二重化共有メモリアクセス方法を用いたストレージ装置
US8898397B2 (en) * 2012-04-11 2014-11-25 Moon J. Kim Memory and process sharing across multiple chipsets via input/output with virtualization
JP5930046B2 (ja) * 2012-08-17 2016-06-08 富士通株式会社 情報処理装置、及び情報処理装置の制御方法
CN104092646B (zh) * 2013-10-28 2016-10-12 腾讯科技(深圳)有限公司 操作同步方法和装置
CN104572508A (zh) * 2015-01-22 2015-04-29 山东超越数控电子有限公司 一种基于PCIE非透明桥的cache镜像方法

Also Published As

Publication number Publication date
US20170220255A1 (en) 2017-08-03
EP3211535A1 (en) 2017-08-30
RU2017118316A (ru) 2018-11-26
CN107209725A (zh) 2017-09-26
EP3211535A4 (en) 2017-11-22
SG11201702806UA (en) 2017-07-28
AU2015411096A1 (en) 2017-07-06
JP2018503156A (ja) 2018-02-01
BR112017008674A2 (pt) 2018-06-19
WO2017101080A1 (zh) 2017-06-22
CA2963915A1 (en) 2017-06-17
RU2017118316A3 (ko) 2018-11-26

Similar Documents

Publication Publication Date Title
KR20170086484A (ko) 기록 요청 처리 방법, 프로세서, 그리고 컴퓨터
US8589723B2 (en) Method and apparatus to provide a high availability solid state drive
TWI721319B (zh) 資料儲存系統中的多埠中介件架構
US8694723B2 (en) Method and system for coupling serial attached SCSI (SAS) devices and internet small computer system internet (iSCSI) devices through single host bus adapter
US8880768B2 (en) Storage controller system with data synchronization and method of operation thereof
US20110238909A1 (en) Multicasting Write Requests To Multiple Storage Controllers
JP4509827B2 (ja) シリアルコネクトバスを使用したコンピュータシステム及び複数cpuユニットのシリアルコネクトバスによる接続方法
JP2006302250A (ja) PCI−Express通信システム
US9734115B2 (en) Memory mapping method and memory mapping system
JP2020064634A (ja) ホスト及びストレージサービスの動作方法並びにNVMeSSD
US9087162B2 (en) Using a PCI standard hot plug controller to modify the hierarchy of a distributed switch
KR20190112626A (ko) 어레이 내에서 솔리드 스테이트 드라이브들을 자율적으로 관리하는 메커니즘
US11494096B2 (en) System and method for storage array enclosure discovery
WO2021012169A1 (zh) 一种提高存储系统可靠性的方法和相关装置
WO2020110895A1 (ja) 通信装置、情報処理システム、および通信方法
TW201342217A (zh) 多核心處理系統的初始化技術
US11093153B1 (en) Inter-drive data transfer
US10938904B2 (en) Multi-processor/endpoint data splitting system
JP7054807B2 (ja) データ転送システム、アダプタ、及びシステムホスト
JP6825263B2 (ja) ストレージ制御装置、およびストレージシステム
US20240012770A1 (en) Interface device having plurality of ports and method of operating the same
US20200364153A1 (en) Relay device, computer program product, and information processing system
US20210152670A1 (en) Using high speed data transfer protocol
JP2024011738A (ja) ストレージシステム、データ送信方法およびネットワークインタフェース
CN116225986A (zh) 一种存储系统、数据处理方法及装置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application