KR20060100417A - 다중 소스로부터의 데이터를 통신 버스를 통해 송신하는방법 및 장치 - Google Patents

다중 소스로부터의 데이터를 통신 버스를 통해 송신하는방법 및 장치 Download PDF

Info

Publication number
KR20060100417A
KR20060100417A KR1020067009565A KR20067009565A KR20060100417A KR 20060100417 A KR20060100417 A KR 20060100417A KR 1020067009565 A KR1020067009565 A KR 1020067009565A KR 20067009565 A KR20067009565 A KR 20067009565A KR 20060100417 A KR20060100417 A KR 20060100417A
Authority
KR
South Korea
Prior art keywords
data
source
section
lane
source data
Prior art date
Application number
KR1020067009565A
Other languages
English (en)
Other versions
KR100825238B1 (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 KR20060100417A publication Critical patent/KR20060100417A/ko
Application granted granted Critical
Publication of KR100825238B1 publication Critical patent/KR100825238B1/ko

Links

Images

Classifications

    • 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/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • 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/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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
    • 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
    • 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/4009Coupling between buses with data restructuring
    • G06F13/4013Coupling between buses with data restructuring with data re-ordering, e.g. Endian conversion
    • 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/4247Bus transfer protocol, e.g. handshake; Synchronisation on a daisy chain bus
    • 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/16Memory access

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Bus Control (AREA)
  • Information Transfer Systems (AREA)
  • Hardware Redundancy (AREA)
  • Small-Scale Networks (AREA)

Abstract

메모리 시스템에서, 다중 메모리 모듈 (208-211; 도 2) 이 버스 (220) 를 통해 통신한다. 각각의 메모리 모듈은 허브 (302; 도 3) 및 적어도 하나의 메모리 스토리지 유닛 (304) 을 포함한다. 허브는 메모리 스토리지 유닛으로부터 로컬 데이터 (410; 도 4) 를, 하나 이상의 다른 메모리 모듈로부터 다운스트림 데이터 (420) 를 수신한다. 허브는 데이터를 어셈블링 (718; 도 7) 하여 데이터 블록 구조 (440) 의 버스를 통해 송신하고, 이는 다중 레인 (508-515; 도 5) 으로 나눠진다. 데이터 블록 구조 내에서, 제 1 소스에 의해 버스에 위치되는 데이터 (예를 들면, 로컬 또는 다운스트림 데이터) 의 어디서 중지점이 발생할지가 표시 (612; 도 6) 된다. 이 표시에 기초하여, 제 2 소스로부터의 데이터 (예를 들어, 다운스트림 또는 로컬 데이터) 가 데이터 블록의 나머지에 위치되고, 따라서 버스에서의 갭 (gap) 을 감소시킨다.
메모리, 레인, 허브, 데이터, 중지점

Description

다중 소스로부터의 데이터를 통신 버스를 통해 송신하는 방법 및 장치 {METHOD AND APPARATUS FOR SENDING DATA FROM MULTIPLE SOURCES OVER A COMMUNICATIONS BUS}
기술의 분야
본 발명은 일반적으로 패킷 기반 통신 버스에서 데이터를 어셈블링하고 송신하는 것, 더 구체적으로는, 다중 소스로부터의 데이터를 어셈블링하고 준비시켜 공통 통신 버스에서 송신하는 것에 관한 것이다.
배경
도 1 에 설명되는 것과 같은, 통상적인 컴퓨터 시스템 (100) 은 프로세서 (102), 메모리 제어기 (104), 및 메인 메모리 스토리지 (106) 를 포함한다. 메인 메모리 스토리지 (106) 는 동적 랜덤 액세스 메모리 (DRAM) 칩과 같은, 하나 이상의 메모리 칩을 포함한다.
프로세서 (102) 가 메인 메모리 스토리지 (106) 로부터의 데이터를 획득하기 위해, 프로세서 (102) 는 통신 버스 (108) 를 통해 데이터 요청을 메모리 제어기 (104) 로 송신한다. 메모리 제어기 (104) 는 이 요청을 프로세스 및 리포맷 (reformat) 하고, 하나 이상의 리포맷된 요청 메시지를 메인 메모리 스토리지 버스 (110) 를 통해 메인 메모리 스토리지 (106) 로 송신한다. 이때 메인 메모리 스토리지 (106) 는 요청된 데이터를 메인 메모리 스토리지 버스 (110) 를 통해 메모리 제어기 (104) 로 리턴한다. 요청된 데이터를 수신한 후에, 메모리 제어기 (104) 는 그 데이터를 데이터 통신 버스 (108) 를 통해 프로세서 (102) 로 송신한다.
특정 요청과 연관된 정보 및 데이터는 종종 "트랜잭션" 이라 칭해진다. 때때로, 메모리 제어기 (104) 는 다중 트랜잭션를 동시에 프로세싱할 수 있다. 이는 소스 (예를 들면, 메인 메모리 스토리지 (106) 를 갖는 다중 DRAM) 로부터의 데이터가 메인 메모리 스토리지 버스 (110) 를 통해 메인 메모리 스토리지 (106) 으로부터 메모리 제어기 (104) 로 리턴되는 데 이용가능한 상황을 초래할 수 있다. 이것이 발생할 때, 메모리 제어기 (104) 는 조정 프로세스를 수행하여 소스 (예를 들면, DRAM) 가 메인 메모리 스토리지 버스 (110) 로 액세스하는 것을 허용할지 여부를 판단한다.
일단 액세스가 허용되면, 메인 메모리 스토리지 (106) 는 트랜잭션의 사이즈 및 메인 메모리 스토리지 버스의 너비 (width; 110; 예를 들면, 패러렐 비트의 수) 에 의존하여, 하나 이상의 버스 클록 사이클 동안 메인 메모리 스토리지 버스 (110) 에 트랜잭션과 연관된 데이터를 위치시킨다. 예를 들면, 만약 트랜잭션이 52 데이터 비트를 포함하고, 버스 너비가 32 비트라면, 버스 (110) 에서 데이터를 전송하기 위해서는 2 클록 사이클이 필요할 것이다. 간략화를 위해, 헤더 정보가 포함되지 않는다고 가정하면, 처음 32 비트는 제 1 클록 사이클 동안 전송 될 것이고, 다음의 20 비트는 제 2 클록 사이클 동안에 전송될 것이다.
상기한 예는, 트랜잭션 데이터가 메인 메모리 스토리지 버스 (110) 에 전송되는 마지막 클록 사이클 동안, 버스 (110) 가 종종 완벽하게 채워지지 않는다는 것을 설명한다. 이 예에서, 제 2 클록 사이클 동안, 이용가능한 32 비트 중에 단지 20 비트만이 채워지고, 12 비트는 빈 채로 남겨진다. 현재의 시스템에서, 만약 메인 메모리 스토리지 버스 (110) 가 트랜잭션의 완료 후에 다른 소스 (예를 들면, 다른 DRAM) 에 허용된다면, 이 12 비트는 빈 채로 남겨질 것이고, 다음 트랜잭션에 대한 데이터는 다음 클록 사이클에서 시작될 것이다.
이 예는 선행 기술을 사용하면, 메인 메모리 스토리지 버스 (110) 상에 본질적으로 갭이 존재한다는 것을 설명한다. 이 갭은 시스템 지연 시간을 증가시키고 대역폭을 감소시킨다. 따라서, 버스에서의 전송을 위해 다중 소스로부터의 데이터를 더 효율적으로 어셈블링하는 방법 및 장치가 필요하다.
개요
일 실시형태에서, 전자 시스템은 하나 이상의 메모리 액세스 요청을 생성하고 송신하는 프로세서, 및 다중 메모리 모듈을 포함한다. 메모리 모듈들은 통신 버스를 통해 동작적으로 함께 결합되어 있고, 하나 이상의 메모리 요청에서 요청된 데이터를 리턴한다. 각각의 다중 메모리 모듈은 데이터 소스이며, 다중 메모리 모듈의 메모리 모듈은 제 1 소스 데이터 및 제 2 소스 데이터가 이용가능한지를 판단한다. 또한, 그것은 데이터 블록의 제 1 섹션 내의 제 1 인접 레인 하나 이상을 제 1 소스 데이터의 적어도 일부에 할당하기도 하고, 데이터 블록의 제 2 섹션 내의 제 2 인접 레인 하나 이상을 제 2 소스 데이터의 적어도 일부에 할당하며, 여기서 데이터 블록은 다중 레인 세트를 포함하고, 각 레인은 구성가능한 비트 세트를 포함한다. 제 2 섹션은 다음 레인에서 시작되고, 이는 제 1 섹션에 인접한다. 메모리 모듈은, 통신 버스를 통해 데이터 전송주기 동안, 데이터 블록의 제 1 섹션 내의 제 1 소스 데이터의 적어도 일부, 및 데이터 블록의 제 2 섹션 내의 제 2 소스 데이터의 적어도 일부를 송신한다.
다른 실시형태에서, 메모리 모듈은 로컬 데이터를 저장하는 하나 이상의 스토리지 유닛, 및 하나 이상의 메모리 스토리지 및 허브가 하나 이상의 다른 허브로부터의 다운스트림 데이터를 수신할 수 있게 하는 통신 버스에 연결된 허브를 포함한다. 허브는 제 1 소스 데이터 및 제 2 소스 데이터가 이용가능한지를 판단한다. 또한 허브는 데이터 블록의 제 1 섹션 내의 제 1 인접 레인 하나 이상을 할당하기도 하고, 데이터 블록의 제 2 섹션 내의 제 2 인접 레인 하나 이상을 제 2 소스 데이터의 적어도 일부에 할당하며, 여기서 데이터 블록은 다중 레인 세트를 포함하고, 각 레인은 구성가능한 비트 세트를 포함하며, 제 2 섹션은 제 1 섹션에 인접한 다음 레인에서 시작한다. 또한 허브는, 통신 버스를 통해 데이터 블록 전송 주기 동안, 데이터 블록의 제 1 섹션 내의 적어도 일부의 제 1 소스 데이터, 및 데이터 블록의 제 2 섹션 내의 적어도 일부의 제 2 소스 데이터를 송신하기도 한다.
다른 실시형태에서, 데이터를 어셈블링하고 송신하는 장치는 하나 이상의 메 모리 스토리지 유닛으로부터 로컬 데이터를 수신하는 수단, 하나 이상의 다운스트림 데이터 소스로부터 통신 버스를 통해 다운스트림 데이터를 수신하는 수단, 및 로컬 데이터 및 다운스트림 데이터가 통신 버스를 통해 어떻게 송신될 것인지를 판단하는 수단을 포함한다. 판단하는 단계는 데이터 블록의 제 1 섹션 내의 제 1 인접 레인 하나 이상을 로컬 데이터의 적어도 일부에 할당하는 단계, 및 데이터 블록의 제 2 섹션 내의 제 2 인접 레인 하나 이상을 다운스트림 데이터의 적어도 일부에 할당하는 단계를 포함하고, 여기서 데이터 블록은 다중 레인 세트를 포함하며, 각 레인은 구성가능한 비트를 세트를 포함하고, 제 1 섹션과 제 2 섹션은 인접한다.
다른 실시형태에서, 통신 버스를 통해 데이터를 송신하는 장치는 제 1 데이터 소스로부터 제 1 소스 데이터를 수신하는 수단, 제 2 데이터 소스로부터 제 2 소스 데이터를 수신하는 수단, 및 제 1 소스 데이터 및 제 2 소스 데이터를 통신 버스를 통해 송신하는 수단을 포함한다. 제 1 소스 데이터 및 제 2 소스 데이터를 송신하는 단계는 제 1 소스 데이터를 통신 버스를 통해 송신하는 단계, 제 1 소스 데이터의 단부에 대응하는 제 1 중지점을 확인하는 단계, 제 2 소스 데이터를 통신 버스를 통해 제 1 소스 데이터의 단부에 인접하게 송신하는 단계, 및 제 2 소스 데이터에 대응하는 제 2 중지점을 확인하는 단계를 포함한다.
다른 실시형태에서, 통신 버스에서 데이터를 송신하는 방법은 데이터 블록 구조 내의 제 1 소스 데이터 일부를 배열하는 단계, 및 통신 버스를 통해 제 1 소스 데이터의 제 1 부분을 송신하는 단계를 포함하고, 여기서 데이터 블록 구조는 고정된 수의 인접하고, 구성가능한 비트를 포함한다. 이 방법은 제 2 프로세싱 주기 동안 데이터 블록 구조의 제 1 섹션 내의 제 1 소스 데이터의 잔여 부분을 배열하는 단계, 제 2 프로세싱 주기 동안 데이터 블록 구조의 제 2 섹션 내의 제 2 소스 데이터의 제 1 부분을 배열하는 단계, 및 제 1 소스 데이터의 잔여 부분 및 제 2 소스 데이터의 제 1 부분을 송신하는 단계를 포함하고, 여기서 제 1 섹션은 인접 비트의 제 1 세트를 포함하며, 제 2 섹션은 제 1 섹션에 인접하고, 제 2 섹션은 인접 비트의 제 2 세트를 포함한다.
다른 실시형태에서, 방법은 제 1 소스 데이터 및 제 2 소스 데이터가 이용가능한지를 판단하는 단계, 및 데이터 블록의 제 1 섹션 내의 제 1 인접 레인 하나 이상을 제 1 소스 데이터의 적어도 일부에 할당하는 단계를 포함하고, 여기서 데이터 블록은 다중 레인 세트를 포함하며, 각 레인은 구성가능한 비트의 세트를 포함한다. 이 방법은 데이터 블록의 제 2 섹션 내의 제 2 인접 라인 하나 이상을 할당하는 단계, 및 통신 버스를 통해 데이터 블록 전송주기 동안, 데이터 블록의 제 1 섹션 내의 적어도 일부의 제 1 소스 데이터, 및 데이터 블록의 제 2 섹션 내의 적어도 일부의 제 2 소스 데이터를 송신하는 단계를 더 포함하고, 여기서 제 2 섹션은 제 1 섹션에 인접한 다음 레인에서 시작한다.
다른 실시형태에서, 방법은 데이터 블록 구조의 제 1 섹션 내의 제 1 소스로부터의 제 1 소스 데이터를 배열하는 단계를 포함하고, 여기서 데이터 블록 구조는 고정된 수의 인접하고, 구성가능한 비트를 포함하며, 데이터 블록 구조 내의 데이터는 통신 버스에서 주기적으로 발송된다. 이 방법은 제 2 소스로부터의 제 2 소스 데이터가 통신 버스를 통해 송신되는데 이용될 수 있는지를 판단하는 단계; 및 통신 버스로의 액세스를 요청하여 제 2 소스 데이터를 송신하는 단계를 더 포함한다. 이 방법은 데이터 블록 구조 내에서, 제 2 소스 데이터의 적어도 일부가 어디에 위치되어야 하는지에 대한 지시를 수신하는 단계, 이 지시에 따라 데이터 블록 구조 내에 제 2 소스 데이터의 적어도 일부를 배열하는 단계, 제 1 섹션의 일단에 인접한 데이터 블록의 제 2 섹션을 점유하는 제 2 소스 데이터의 적어도 일부를 낳는 단계, 및 데이터 블록 전송주기 동안 제 1 소스 데이터 및 제 2 소스 데이터의 적어도 일부를 통신 버스를 통해 송신하는 단계를 더 포함한다.
다른 실시형태에서, 방법은 데이터 블록 구조의 제 1 섹션 내에 제 1 소스 데이터를 배열하는 단계를 포함하고, 여기서 데이터 블록 구조는 고정된 수의 인접하고, 구성가능한 비트를 포함한다. 이 방법은 요청을 수신하여 통신 버스를 통해 제 2 소스 데이터를 송신하는 단계, 제 1 소스 데이터에서 중지점의 위치를 확인하는 단계, 및 중지점 뒤에 데이터 블록 구조의 제 2 섹션에 제 2 소스 데이터의 적어도 일부를 배열하는 단계를 더 포함하고, 여기서 제 2 섹션은 제 1 섹션의 일단에 인접한다. 이 방법은 데이터 블록 전송 주기동안 제 1 소스 데이터 및 제 2 소스 데이터의 적어도 일부를 통신 버스를 통해 송신하는 단계를 더 포함한다.
도면의 간단한 설명
도 1 은 선행 기술에 따른, 컴퓨터 시스템의 간략화된 블록도를 나타낸다.
도 2 는 본 발명의 일 실시형태에 따른, 컴퓨터 시스템의 간략화된 블록도를 나타낸다.
도 3 은 본 발명의 일 실시형태에 따른, 메모리 모듈의 간략화된 블록도를 나타낸다.
도 4 는 본 발명의 일 실시형태에 따른, 허브의 간략화된 블록도를 나타낸다.
도 5 는 본 발명의 일 실시형태에 따른, 타이밍도의 일례를 나타낸다.
도 6 은 본 발명의 일 실시형태에 따라, 버스로의 액세스를 요청하는 방법의 흐름도를 나타낸다.
도 7 은 본 발명의 일 실시형태에 따라, 버스로의 액세스를 허용하는 방법의 흐름도를 나타낸다.
도 8 은 본 발명의 일 실시형태에 따른, 전자 시스템을 나타낸다.
실시형태에 대한 설명
이하의 실시형태에 대한 설명에서, 참조는 도면의 일부를 형성하고 설명의 방법에 의해 본 발명이 실시될 수도 있는 특정 실시형태를 보여주는 첨부되는 도면에 붙여진다. 이 실시형태들은 충분히 상세하게 설명되어 당업자가 본 발명을 실시할 수 있도록 하고, 다른 실시형태가 활용가능할 수도 있다는 것이 이해될 것이며, 본 발명의 범위 밖에서, 프로세스 또는 기계적 변화가 이루어질 수도 있다. 다양한 실시형태의 방법은 실제로, 동시적 또는 연속적으로 조합될 수 있다는 것이 인식될 것이다. 다양한 허용 및 조합은 당업자에게 용이하게 명확해질 것이다.
여기에 상세하게 설명되는, 본 발명의 다양한 실시형태는 새롭고 창의적인 방법 및 데이터를 어셈블링하고 송신하는 장치를 수반한다. 본 발명의 실시형태는 선행기술에 비하여 몇 가지 중요한 이점을 갖는다. 특히, 다중 소스로부터의 데이터가 하나 이상의 요청기로 리턴될 필요가 있는 메모리 시스템에서 구현될 때, 본 발명의 실시형태는 감소된 시스템 지연시간 및 증가된 대역폭을 제공한다.
도 2 는 본 발명의 일 실시형태에 따른, 컴퓨터 시스템 (200) 의 간략화된 블록도를 나타낸다. 일 실시형태에서, 시스템 (200) 은 하나 이상의 프로세서 (202), 링크 제어기 (206), 및 하나 이상의 메모리 모듈 (208-211) 을 포함한다. 설명의 용이성을 위해, 오직 단일 프로세서 (202) 및 링크 제어기 (206) 가 설명되고 논의된다. 그러나, 다중 프로세서 (202) 및/또는 링크 제어기 (206) 가 시스템 내에 존재할 수 있다. 유사하게, 네 개의 메모리 모듈 (208-211) 이 설명됨에도 불구하고, 더 많거나 더 적은 메모리 모듈이 시스템 내에 존재할 수도 있다.
일 실시형태에서, 각 메모리 모듈 (208-211) 은 삽입 가능한 프린트 회로 기판과 같은, 분리된 기판에 위치된다. 다른 실시형태에서, 다중 메모리 모듈이 단일 기판에 위치할 수 있고, 그리고/또는 메모리 모듈의 부분들이 다중 기판에 분산될 수 있다. 본 발명의 일 실시형태에 따른, 메모리 모듈은 도 3 과 연계하여 추후에 더욱 상세하게 설명될 것이다.
때때로, 프로세서 (202) 는 하나 이상의 메모리 모듈 (208-211) 내에 저장된 정보로의 액세스 요청을 생성하고 송신한다. 이 "메모리 액세스 요청" 은 메모리 모듈 (208-211) 내에 데이터를 저장하는 요청, 및 메모리 모듈 (208-211) 로부터의 데이터를 추출하는 요청을 포함한다. 일 실시형태에서, 프로세서 (202) 외에, 하나 이상의 다른 요청기 (204) 가 시스템 (204) 내에 존재할 수 있다. 예를 들면, 시스템 (200) 은 하나 이상의 다른 프로세서, 인터페이스, 포트, 어댑터, 또는 데이터를 요청할 수 있는 다른 엔티티를 포함할 수 있다. 프로세서 (202) 및 하나 이상의 다른 요청기 (204) 는 여기서 "요청 시작기" 로 호칭된다.
각 액세스 요청은 초기에, 요청 시작기 (202, 204) 로부터 액세스 요청을 수신하는, 링크 제어기 (206) 에 의해 프로세스된다. 예를 들면, 제한의 방법에 의해서가 아니라, 링크 제어기 (206) 은 노스 브리지 (North Bridge) 또는 다른 유형의 프로세싱 요소일 수 있다. 요청의 내용에 기초하여, 링크 제어기 (206) 는 하나 이상의 "메모리 액세스 명령" 을 생성하고, 여기에서 "링크 버스" 라고 호칭되는 통신 버스 (220) 를 통해, 하나 이상의 메모리 모듈 (208-211) 로 송신한다. 만약 메모리 액세스 요청이 데이터 추출 (저장과 대조적으로) 을 요구한다면, 메모리 모듈 (208-211) 은 요청된 데이터를 링크 버스 (220) 를 통해 링크 제어기 (206) 로 리턴하고, 링크 제어기 (206) 는 요청된 데이터를 요청 시작기 (202, 204) 로 라우트한다.
일 실시형태에서, 메모리 모듈 (208-211) 은 "터널형" 또는 "데이지-체인" 구성에서 링크 버스 (220) 를 통하여 함께 동작적으로 결합된다. 이 구성에서, 링크 제어기 (206) 는 제 1 메모리 모듈 (208) 을 갖는 링크 버스를 통해 상호연결 된다. 따라서, 링크 버스 (220) 의 제 1 부분 (222) 은 링크 제어기 (206) 및 제 1 메모리 모듈 (208) 을 상호연결한다. 차례로, 제 1 메모리 모듈 (208) 은, 제 2 메모리 모듈 (209) 을 갖는 링크 버스를 통해 상호연결된다. 따라서, 링크 버스 (220) 의 제 2 부분 (224) 은 제 1 메모리 모듈 (208) 및 제 2 메모리 모듈 (209) 등을 상호연결한다.
일 실시형태에서, 링크 버스 (220) 는 패러렐 버스이다. 예를 들면, 제한의 방식에 의함은 아니나, 링크 버스 (220) 는 32 비트 너비이다. 다른 실시형태에서, 링크 버스 (220) 는 32 비트보다 넓거나 좁을 수 있고, 시리얼 버스일 수 있다.
"다운스트림" 및 "업스트림" 이라는 용어는 남은 설명에서 사용될 것이다. 하부 메모리 모듈 (211) 은 링크 버스 (220) 의 가장 먼 다운스트림 단부에 존재하고, 링크 제어기 (206) 은 링크 버스 (220) 의 가장 먼 업스트림 단부에 존재한다. 따라서, 메모리 모듈이 마지막 메모리 모듈 (211) 의 방향으로 수신하는 데이터 및 정보가 다운스트림 방향으로부터 수신되는 것이 고려된다. 반대로, 메모리 모듈이 링크 제어기 (206) 의 방향으로부터 수신하는 데이터 및 정보는 업스트림 방향으로부터 수신되는 것이 고려된다. 유사한 기술을 사용하여, 메모리 모듈 (211) 이 메모리 모듈 (210) 로부터 다운스트림 되는 것이 고려되고, 메모리 모듈 (210 및 211) 이 메모리 모듈 (209) 로부터 다운스트림 되는 것이 고려되며, 메모리 모듈 (209-211) 이 메모리 모듈 (208) 로부터 다운스트림 되는 것이 고려된다.
(가장 낮은 메모리 모듈 (211) 을 제외한) 각 메모리 모듈 (208-210) 은 임 의의 다운스트림 메모리 모듈로 터널형 연결을 제공한다. 원하면, 추가적인 메모리 모듈 (미도시) 이 메모리 모듈 (211) 로부터 더해진 다운스트림일 수 있고, 또는 추가적인 메모리 모듈이 터널에서 임의의 다른 포인트 (예를 들면, 하나 이상의 존재하는 메모리 모듈들 사이 또는 그 위) 에 삽입될 수 있다.
일 실시형태에서, 명령 목적지 (예를 들면, 명령이 어드레스되는 메모리 모듈) 를 무시하고, 각 메모리 모듈 (208-210) 은 각각의 수신된 메모리 액세스 명령을 다음의 다운스트림 메모리 모듈로 전달한다. 다른 실시형태에서, 각각의 메모리 모듈 (208-210) 은, 그 메모리 모듈이 명령의 목적지가 아닐 때에만, 수신된 메모리 액세스 명령을 다운스트림 방향으로 전달한다.
메모리, 헤더 및 다른 프로토콜 정보로부터 추출되는 데이터를 포함할 수 있는, 다운스트림 방향으로 수신되는 임의의 유형의 정보는 여기서 "다운스트림 데이터", 및 임의의 다른 유형의 정보로부터 추출된 데이터라 호칭된다. 유사하게, "업스트림 데이터" 라는 용어는 여기에서 사용되어 업스트림 방향으로부터 수신되는 임의의 유형의 정보를 의미하고, 메모리 액세스 명령, 저장되는 데이터, 헤더 및 다른 프로토콜 정보를 포함할 수 있다. "데이터" 라는 용어는 저장 또는 추출되는 실제의 데이터만으로 제한되지 않는다. 또한 이 용어는 헤더, 다른 프로토콜 정보, 명령, 및 다른 유형의 정보를 포함한다.
도 3 은 본 발명의 일 실시형태에 따른, 메모리 모듈 (300) 의 간략화된 블록도를 나타낸다. 일 실시형태에서, 각 메모리 모듈 (300) 은 허브 (302) 및 하나 이상의 메모리 스토리지 유닛 (304) 을 포함한다. 본 발명의 일 실시형태 에 따른, 허브는 추후에 도 4 와 연계하여 더욱 상세히 설명될 것이다.
일 실시형태에서, 허브 (302) 및 메모리 스토리지 유닛 (304) 은 단일 기판 (예를 들면, 프린트 회로 기판) 상에 함께 배치되고, 이는 제거 가능하게 통신 버스에 연결가능하다. 다른 실시형태에서, 허브 (302) 및 하나 이상의 메모리 스토리지 유닛 (304) 은 분리된 기판 상에 위치할 수 있고, 그리고/또는 이 기판은 영구적으로 버스에 연결가능하다. 어느 방법이든, 각각의 허브 (302) 는 그와 연관된 메모리 스토리지 유닛 (304) 세트를 갖고, 이는 오로지 액세스만 할 수도 있다. 따라서, 각각의 메모리 모듈 (300) 은 "데이터 소스" 로 여겨질 수 있다.
메모리 스토리지 유닛 (304) 은 공통 링크 (미도시), 포인트 투 포인트 연결, 데이지 체인 링크, 또는 어떤 다른 방법을 통해 허브 (302) 에 연결될 수 있다. 일 실시형태에서, 각각의 메모리 스토리지 유닛 (304) 은 예를 들면, 동적 랜덤 액세스 메모리 (DRAM) 디바이스와 같은, 특정 메모리 구성요소이다. 다른 실시형태에서, 메모리 스토리지 유닛 (304) 은 다른 유형의 메모리 디바이스 (예를 들면, 읽기 전용 메모리 (예를 들면, ROM, PROM, EEPROM 등), 플래시 메모리 또는 다른 메모리 유형) 를 포함할 수 있다. 네 개의 메모리 스토리지 유닛 (403) 이 도 3 에 나타날지라도, 더 많은 또는 더 적은 유닛 (304) 이 임의의 메모리 모듈 (300) 에 포함될 수 있다.
일 실시형태에서, 허브 (302) 는 하나 이상의 주문형 반도체 (AISC) 를 포함한다. 다른 실시형태에서, 허브 (302) 는 하나 이상의 범용 또는 특수용도 프 로세서를 포함한다. 허브 (302) 는 업스트림 링크 버스 (310) 를 통해 업스트림 메모리 모듈 (208; 도 2) 또는 링크 제어기 (206) 에 통신한다. 또한, 만약 임의의 다운스트림 메모리 모듈이 존재한다면, 허브 (302) 는 다운스트림 링크 버스 (312) 를 통해 다운스트림 메모리 모듈에 통신한다. 따라서, 허브 (302) 는 버스 (즉, 다운스트림 링크 버스 (312)) 의 제 1 부분 상에서 다운스트림 메모리 모듈로부터 데이터를 수신하고 버스 (즉, 업스트림 링크 버스 (310)) 의 제 2 부분 상에서 링크 제어기 (206) 을 향해 데이터를 송신한다.
일 실시형태에서, 허브 (302) 가 업스트림 링크 버스 (310) 에서 메모리 액세스 명령을 수신할 때, 허브 (302) 는 다운스트림 링크 버스 (312) 에서 명령을 재전송하고, 명령 큐 (추후에 설명되는, 도 4, 요소 (412) 참조) 의 명령에 관한 정보를 저장한다. 또한 허브 (302) 는 그것이 명령의 목적인지 여부를 판단한다. 만약 그렇다면, 액세스가 메모리 모듈 (300) 과 연관된 메모리 스토리지 유닛 (304) 에 필요할지라도, 허브 (302) 는 업스트림 링크 버스 (310) 에서 요구되는 데이터를 만들고 송신한다. 또한, 허브 (302) 는 다운스트림 링크 버스 (312) 에서 다운스트림 메모리 모듈 (미도시) 로부터 데이터를 수신하고, 허브 (302) 는 그 데이터를 업스트림 링크 버스 (310) 에서 재전송한다.
앞서 설명한 바와 같이, 허브 (302) 는 적어도 두 소스; a) 메모리 스토리지 유닛 (304) 으로부터의 데이터; 및 b) 다운스트림 메모리 모듈로부터의 데이터, 로부터 데이터를 수신한다. 허브 (302) 에 의해 허브 (302) 와 연관된 메모리 스토리지 유닛 (304) 으로부터 추출되는 데이터는 여기에 "로컬 데이터" 로 호칭된 다. 반대로, 허브 (302) 에 의해 하나 이상의 다운스트림 메모리 모듈로부터 다운스트림 링크 버스 (312) 에서 수신되는 데이터는 여기에 "다운스트림 데이터" 로 호칭된다. "로컬 데이터" 및 "다운스트림 데이터" 라는 용어가 시스템 내에 존재하는 오직 두 개의 데이터 소스를 의미하는 것으로 해석될 수도 있을지라도, 이 용어들은 이에 제한되지 않는다. 데이터는 하나 또는 다중의 다른 소스 (예를 들면, 하나 또는 다중의 다운스트림 메모리 모듈 또는 다른 소스) 로부터 기인할 수 있다.
허브 (302) 에 의해 제공되는 중요한 기능은 로컬 데이터 및 다운스트림 데이터 모두를 수신하는 것, 이 모두를 업스트림 링크 버스 (310) 에 제공하는 것이다. 일 실시형태에서, 허브 (302) 는 로컬 데이터 및 다운스트림 데이터를 수신하고, 이것들을 업스트림 링크 버스 (310) 에서, 업스트림 링크 버스 (310) 에서 이용가능한 리소스를 효율적으로 사용하는 방식으로 송신한다. 특히, 만약 유효 다운스트림 또는 로컬 데이터가 리턴되는데 이용가능하지 않더라도, 이 데이터는 버스에 현저한 데이터 "갭" 을 야기하지 않고 결합되며 송신되고, 여기서 "갭" 은 유효 데이터가 없이 링크 버스를 통해 송신되는 하나 이상의 비트를 포함한다. 이것이 성취되는 방법은 도 4 내지 도 8 에서 설명되는 실시형태와 함께, 상세하게 설명된다.
도 4 는 본 발명의 일 실시형태에 따른, 허브 (400) 의 간략화된 기능 블록도를 나타낸다. 일 실시형태에서, 허브 (400) 는 다양한 기능 요소를 포함하고, 설명을 위해, 이는 도 4 에서 명료한 블록으로 설명된다. 다양한 실시형태 에서, 각 기능 요소들과 연관된 실제의 논리 요소 및 하드웨어는 단일 ASIC 에 갖추어져 있거나, 다중 ASIC 및/또는 다른 이산 디바이스에 갖추어져 있을 수 있다. 또한, 도 4 에서 설명되는 기능 요소의 다양한 측면은 하드웨어, 소프트웨어, 또는 이 모두에 구현될 수 있다.
간단히, 일 실시형태에서, 허브 (400) 는 로컬 데이터 및 다운스트림 데이터를 수신하고, 두 소스로부터의 데이터가 어떻게 결합되는지 여부를 판단하며, 결합된 데이터를 업스트림 링크 버스 (452) 에 제공한다. 일 특정 실시형태에 따라, 허브 (400) 의 기능 구성요소들은 다음 단락에서 간략히 설명된다. 다른 실시형태 및 추가적인 세부사항은 다음의 설명에 포함된다.
허브 (400) 는 로컬 데이터 버퍼 (410) 및 다운스트림 데이터 버퍼 (420) 를 포함하고, 이는 각각, 필요하다면, 로컬 데이터 및 다운스트림 데이터를 수신하는 수단으로 이용된다. 또한 허브 (400) 는 로컬 조정 논리 수단 (414), 다운스트림 조정 논리 수단 (422), 및 인터 소스 조정 수단 (416) 도 포함하고, 이는 공동으로 작동하여 로컬 데이터 및 다운스트림 데이터가 업스트림 링크 버스 (452) 에 어떻게 송신될 것인지 여부를 판단한다. 또한 허브 (400) 는 로컬 출력 (430) 을 배열하는 수단, 다운스트림 출력 (432) 를 배열하는 수단, 및 데이터 어셈블링 수단 (450) 도 포함하고, 이는 조정 수단 (414, 416, 422) 에 의한 판단에 따라, 로컬 데이터 및 다운스트림 데이터를 데이터 블록 구조로 배열하는 기능을 한다. 데이터 블록 구조는 버퍼 (440, 442) 에 의해 나타난다. 데이터 블록 구조로 조직되는 데이터는 인접하는 방식으로 업스트림 링크 버스 (452) 에서 송신된다. 또한, 허브 (400) 는 공통 큐 (412) 를 포함하고, 그 허브는 수신되는 메모리 액세스 명령에 관한 정보로 이에 저장한다.
데이터 블록 구조는 더욱 상세하게 설명될 것이다. 일 실시형태에서, 데이터 블록 구조 (여기서 "데이터 블록" 으로 호칭되기도 함) 는 고정된 수의 구성가능한 비트를 포함한다. 예를 들면, 일 실시형태에서, 데이터 블록은 256 비트를 포함한다. 다른 실시형태에서, 더 많거나 더 적은 비트가 데이터 블록 내에 나타난다. 데이터가 업스트림 링크 버스 (452) 에서 송신될 때, 데이터 블록 구조의 비트는 데이터에 적합하게 구성 (예를 들면, "1" 또는 "0" 을 채워넣음으로써) 되고, 데이터 블록 전송주기 (즉, 추후에 설명되는, 하나 이상의 링크 버스 클록 사이클) 동안 데이터는 버스에 시간 기록된다.
일 실시형태에서, 데이터 블록은 정수의 인접 "레인" 으로 나뉘고, 여기서 각 레인은 인접 비트의 세트를 포함한다. 예를 들면, 일 실시형태에서, 데이터 블록은 8 레인의 세트를 포함한다. 일 실시형태에서, 데이터 블록 구조 내의 레인의 수는 고정되고, 각 레인은 동일한 수의 비트를 포함한다. 다른 실시형태에서, 레인의 수는 가변적이고, 그리고/또는 레인당 비트의 수는 레인마다 상이할 수 있다. 레인 구조는 버퍼 (441, 442) 에 의해 도 4 에서 나타내어진다. 각 버퍼 (440, 442) 는 "0" 부터 "7" 까지 붙여진, 8 레인을 갖는 데이터 블록을 나타낸다. 실제로, 버퍼 (440, 442) 는 분리된 버퍼, 또는 동일한 버퍼일 수 있다. 버퍼 (440, 442) 는 설명의 편의를 위해 도 4 에서 분리되어 나타난다.
256 비트 데이터 블록 및 블록당 8 레인의 예를 이용하면, 각 레인은 32 비 트를 포함할 것이다. 따라서, 레인 0 은 비트 0-31 로, 레인 1 은 비트 32-63 으로, 레인 2 는 비트 64-95 등으로 지정될 수 있으며, 레인 7 은 비트 224-255 으로 지정된다. 다른 실시형태에서, 더 많거나 더 적은 레인이 데이터 블록 내에 나타날 수 있다. 예를 들면, 데이터 블록은 겨우 두 개의 레인만을 포함할 수 있다. 또 따른 실시형태에서, 레인 0 은 가장 중요한 비트, 레인 7 은 가장 중요하지 않은 비트, 또는 이 역을 포함할 수 있으며, 또는 각 레인에 할당되는 비트는 비-시퀀스 방식으로 할당될 수 있다.
추후에 더욱 상세히 설명되는 바와 같이, 다양한 실시형태의 레인 구조는 데이터가 로컬 및 다운스트림 소스 모두로부터 이용가능할 때, 허브 (400) 를 동작시켜 업스트림 링크 버스 (452) 를 통해 데이터를 효율적으로 송신한다. 허브 (400) 는 몇 가지 기본적인 프로세스를 수행한다. 첫째로, 허브는 제 1 및 제 2 소스 (예를 들면, 로컬 및 다운스트림 소스, 또는 역) 로부터의 데이터가 언제 수신되고 이용가능한지 판단한다. 둘째로, 임의의 특정 데이터 블록 전송 주기동안 조정 프로세스가 수행되어 어느 데이터가 업스트림 링크 버스로의 액세스를 허용받을 것인지 여부를 판단한다. 셋째로, 특정 데이터 블록 전송주기 동안 레인 필링 프로세스가 수행되어 어느 레인이 어느 데이터에 의해 활용될 것인지를 확인한다. 레인 필링 프로세스는 데이터 블록의 제 1 섹션 내의 하나 이상의 제 1 인접 레인을 제 1 소스 데이터의 적어도 일부에 할당하는 단계, 및 데이터 블록의 제 2 섹션 내의 하나 이상의 제 2 인접 레인을 제 2 소스 데이터의 적어도 일부터 할당하는 단계를 수반하고, 여기서 제 2 섹션은 제 1 섹션과 인접한, 다음 레 인에서 시작한다. 결국, 데이터 블록 전송주기 동안 제 1 소스 데이터의 부분 및 제 2 소스 데이터는 통신 버스를 통해 송신된다.
다시 도 4 를 참조하면, 다운스트림 데이터는 다운스트림 링크 버스 (454) 로부터 수신된다. 일 실시형태에서, 다운스트림 데이터는 다운스트림 데이터 버퍼 (420) 에 위치되거나, 또는 다운스트림 플라이쓰루 경로 (472) 로 라우트된다. 유사하게, 로컬 데이터는 메모리 스토리지 유닛 (402; 예를 들면 유닛 (304); 도 3) 으로부터 수신된다. 일 실시형태에서, 로컬 데이터는 로컬 데이터 버퍼 (410) 에 위치되거나, 또는 로컬 플라이쓰루 경로 (470) 로 라우트된다.
일 실시형태에서, 다운스트림 또는 로컬 데이터 잔여물이 모두 다운스트림 데이터 버퍼 (420) 또는 로컬 데이터 버퍼 (410) 에서 송신되지 않을 때, 및 오직 한 소스로부터의 데이터가 업스트림 버스 (452) 에 대해 경합할 때, 다운스트림 플라이쓰루 경로 (472) 및 로컬 플라이쓰루 경로 (470) 가 사용된다. 이 상황에서, 요청기로의 데이터 리턴을 촉진시키기 위해, 어느 소스로부터의 데이터든지 간단하게 버스가 허용된다. 다른 실시형태에서, 플라이쓰루 경로 (470, 472) 중 하나 또는 모두는 시스템으로부터 제외될 수 있고, 로컬 및 다운스트림 데이터는 버퍼 (410, 420) 의 상태와 무관하게 버퍼될 수 있다.
다양한 실시형태의 완전하게 설명되는 레인 패킹 기술의 관점에서, 나머지 설명은 다중 소스가 버스에 대해 경합하고, 로컬 데이터 및 다운스트림 데이터가 각각, 플라이쓰루 경로 (470, 472) 중 하나를 통해 라우트되지 않고, 로컬 데이터 버퍼 (410) 및/또는 다운스트림 데이터 버퍼 (420) 에 임시적으로 저장된다는 것을 가정한다. 따라서, 다음의 설명의 대부분에서는, 다중 소스로부터의 데이터는 이용가능한 것으로 가정되고, 다중 소스는 업스트림 링크 버스 (452) 로의 액세스에 대해 경합한다.
다운스트림 데이터가 다운스트림 링크 버스로부터 수신될 때, 다운스트림 데이터 스트로브 신호 (408) 은 다운스트림 조정 논리 수단 (422) 으로 송신된다. 다운스트림 데이터가 다운스트림 데이터 버퍼 (420) 에 위치된다고 가정하면, 다운스트림 버퍼 상태 신호 (467) 는 다운스트림 데이터 버퍼가 비어있지 않음을 가리킬 것이다. 버퍼가 비어있지 않을 때, 다운스트림 플라이쓰루 경로는 (472) 사용되지 않는다.
다운스트림 조정 논리 수단 (422) 은 버스 액세스 요청을 생성하는 수단을 포함한다. 데이터 스트로브 (408) 및 버퍼 상태 신호 (467) 가 다운스트림 데이터가 업스트림 링크 버스 (452) 를 통해 송신하는데 이용가능할 때, 다운스트림 조정 논리 수단 (422) 은 인터 소스 조정 수단 (416) 으로 다운스트림 요청 신호 (461) 를 송신한다. 다운스트림 요청은 인터 소스 조정 수단 (416) 에 요청하여 다운스트림 조정 논리 수단 (422) 이 업스트림 링크 버스 (452) 에 다운스트림 데이터를 제공하도록 한다.
유사하게, 로컬 데이터 측에서, 로컬 데이터가 메모리 스토리지 유닛 (402) 로부터 수신될 때, 로컬 데이터 스트로브 신호 (404) 는 로컬 조정 논리 수단 (414) 으로 송신된다. 로컬 데이터가 로컬 데이터 버퍼 (410) 에 위치되는 것으로 가정하면, 로컬 버퍼 상태 신호 (477) 는 로컬 데이터 버퍼가 비어있지 않음 을 가리킨다. 버퍼가 비어있지 않을 때, 로컬 플라이쓰루 경로 (470) 는 사용되지 않는다.
로컬 조정 논리 수단 (414) 은 버스 액세스 요청을 생성하는 수단을 포함한다. 데이터 스트로브 (404) 및 버퍼 상태 신호 (477) 가, 로컬 데이터가 업스트림 링크 버스 (452) 를 통해 송신되는 데 이용가능함을 가리킬 때, 로컬 조정 논리 수단 (414) 은 인터 소스 조정 수단 (416) 으로 로컬 요청 신호 (471) 를 송신한다. 앞서 논의된 다운스트림 측과 유사하게, 로컬 요청은 인터 소스 조정 수단 (416) 에 요청하여 로컬 조정 논리 수단 (414) 이 로컬 데이터의 업스트림 링크 버스 (452) 에 제공하도록 한다.
따라서, 일 실시형태에서, 인터 소스 조정 수단 (416) 은 요청 (471, 461) 을 수신하여 로컬 조정 논리 수단 (414) 및 다운스트림 조정 논리 수단 (422) 모두로부터 버스로 액세스한다. 인터 소스 조정 수단 (416) 은 어떻게 로컬 및 다운스트림 데이터가 버스를 통해 송신될 것인지의 판단을 하는 수단을 포함한다. 따라서, 다중 요청이 일어날 때, 수단 (416) 은 조정 프로세스를 수행하고, 로컬 또는 다운스트림 데이터로의 액세스를 허용한다.
로컬 또는 다운스트림 조정 논리 수단 (414, 422) 은 모두 그 수단들이 버스로의 액세스를 허용할 때까지 그것들의 데이터를 송신하지 않는다. 또한, 인터 소스 조정 수단 (416) 은 하나의 소스에서 다른 소스로 허용을 스위치 하는 것을 결정하고, 인터 소스 조정 수단 (416) 은 레인 구조 내에서, 다음 소소가 어디서부터 데이터를 시작하는지 여부를 판단하고 가리킨다. 인터 소스 조정 수단 (416) 은 다운스트림 및 로컬 조정 논리 수단 (422, 414) 으로부터의 다양한 정보를 사용하여 이 판단을 한다.
특히, 일 실시형태에서, 버스로의 액세스가 허용되는 소스는 데이터의 "중지점" 이 어디서 일어날 것인지를 예상하고, 인터 소스 조정 수단 (416) 에 중지점의 예상되는 위치를 알린다. 내부 소스 조정 수단 (416) 은 그 예상되는 위치를 사용하여, 다음으로 허용된 신호가, 레인 구조 내의, 어디에서 데이터 삽입을 시작하는지 판단한다.
일례가 이 개념을 명확히 할 것이다. 본 발명의 일 실시형태에 따라, 이 예는 도 5 를 참조하기도 하고, 이는 타이밍 도의 일례를 설명한다. 처음에, 오직 내부 클록 신호 (502) 및 레인 데이터 신호 (508-515) 만이 논의될 것이다. 도 5 에 도시되는 다른 신호는 추후에 논의될 것이다.
신호 (502) 는 내부 클록 신호를 나타낸다. 내부 클록 신호는 각 데이터 블록이 어셈블링되는 "프로세싱 주기" 를 정의하는 데 사용된다. 프로세싱 주기는 단일 데이터 블록이 어셈블링되는 시간의 주기를 참조한다. 도 5 가 프로세싱 주기가 하나의 내부 클록 사이클만큼 이라고 설명할지라도, 프로세싱 주기는 하나의 내부 클록 사이클보다 길거나 짧을 수도 있다.
주어진 예에서, 데이터 블록은 8 개의 레인을 포함하고, 레인 데이터 신호 (508-515) 에 의해 지시되는 바와 같이 유효 데이터가 레인에서 이용가능하다. 제 1 프로세싱 주기 (540) 동안, 데이터가 데이터 블록 구조의 레인 (508-151) 에 삽입된다. 일단 어셈블링되면, 그 데이터는 버스에서 이용가능하게 된다. 다음 프로세싱 주기 (542) 동안, 상이한 데이터가 데이터 블록의 레인 (508-515) 에 삽입되고, 그 후에 버스에서 이용가능하게 된다.
또한, 내부 클록의 다양한 에지 (즉, 라이징 및 폴링 에지) 와 데이터 및 다른 신호들간의 관계가 도 5 에 특정 방법으로 설명되었을 지라도, 이 관계는 다른 실시형태에서 달라질 수 있다. 예를 들면, 클록 신호는 다른 신호에 대해 인버트될 수 있다. 다른 수정들이 또한 고려될 수 있다.
일 실시형태에서, 특정 메모리 액세스 요청은 "트랜잭션" 으로 여겨지고, 트랜잭션 식별자는 리턴되는 데이터를 식별하기 위해 요청과 연관된다. 트랜잭션은 실제로 임의의 길이일 수 있다. 예를 들면, 트랜잭션은 단일 비트만큼 짧거나, 100 만 비트만큼의 길이일 수 있다. 일 실시형태에서, 트랜잭션과 연관되는 데이터는 "데이터 단편 (fragment)" 의 세트로 리턴되고, 각각의 단편은 레인의 너비에 대응하는 복수의 비트를 포함한다. 예를 들면, 만약 트랜잭션이 256 비트를 포함하고, 각 레인이 32 비트의 너비라면, 트랜잭션은 8 개의 데이터 단편으로 나눠질 것이다. 데이터를 식별하기 위해, 헤더가 트랜잭션에 대한 데이터와 함께 송신될 수도 있다. 헤더는 임의의 길이일 수 있다. 이하에 설명되는 실시형태에서, 헤더는 하나의 이상의 레인을 소비하지 않는다. 다른 실시형태에서, 헤더가 하나 이상의 레인을 소비하거나, 프로토콜이 헤더가 각각의 트랜잭션에 대해 리턴되지 않도록 하기 위해 사용될 수 있다.
도 5 에 설명되는 예에서, 프로세싱 주기 (540) 동안, 전송되는 제 1 데이터는 레인 "0" (508) 에 위치되는, 헤더 (550), 및 로컬 데이터의 7 개 단편을 포함 하는 로컬 데이터의 제 1 부를 포함하고, 이는 레인 "1-7" (509-515) 에 도시된다. 각각의 데이터 묶음에 포함되는 심볼들은 다음과 같이 나타내어 지며, "L" 은 로컬 데이터; "R" 은 다운스트림 (또는 리모트) 데이터; "T*" 는 트랜잭션 수; "D*" 는 트랜잭션에 대한 데이터 단편을 가리킨다. 따라서, "0" (T0) 의해 식별되는 로컬 트랜잭션 동안, 레인 "I" (509) 에 도시되는 식별자 "L_T0_D7" 는 레인 "1" 내부의 데이터가 프로세싱 주기 (540) 동안 로컬 데이터 (L) 의 제 1 단편 (D0) 에 대응한다는 것을 나타낸다. 유사하게, "0" (T0) 에 의해 식별되는 다운스트림 트랜잭션 동안, 레인 "1" (509) 에 도시되는 식별자 "R_T0_D7" 는 다운스트림 데이터 (R) 의 8 개 단편 (D7) 에 대응한다는 것을 나태낸다.
로컬 소스로부터의 데이터가 제 1 프로세싱 주기 (540) 동안, 레인 구조 안에 존재하기 때문에, 내부 소스 조정 수단 (416, 도 4) 은 미리 로컬 소스가 버스에 액세스할 수 있게 한다. 설명되는 예에서, 로컬 소스는 8 개의 데이터 단편을 갖고 제 1 그랜트 (grant; 허용) 동안에 송신한다. 제 1 프로세싱 주기 (540) 동안, 헤더 (550) 가 레인 "0" (508) 을 소비했기 때문에, 8 개의 데이터 단편 중 단지 7 개 만이 제 1 프로세싱 주기 (540) 동안 어셈블링 될 수 있다. "L_T0_D7" 로 명시된 8 번째 단편을 포함하는, 로컬 소스 데이터의 나머지 부분이 제 2 프로세싱 주기 (542) 동안 레인 "0" 에 위치되는 것으로 도시된다.
8 번째 단편 "L_T0_D7" 의 끝은 로컬 소스 데이터의 "중지점" 을 나타낸다. 이 중지점은 제 2 프로세싱 주기 (542) 의 레인 "1" (509) 의 시작점과 일치한다. 일 실시형태에서, 로컬 또는 다운스트림 소스로부터의 데이터는 제 2 프로세싱 주기 (542) 동안 남아있는 레인 "1-7" 을 채우는 데 사용될 수 있다.
예에서, 내부 소스 조정 수단 (416, 도 4) 은 다음의 다운스트림 소스 (R) 로의 액세스를 허용한다. 특히, 다운스트림 소스는 헤더, 및 16 개의 데이터 단편 (D0 내지 D15) 을 갖고 제 1 트랜잭션 (T0) 동안 송신한다. 중지점이 제 2 프로세싱 주기 (542) 의 레인 "1" (509) 의 시작점에서 발생하기 때문에, 헤더는 시작점에 위치될 수 있다. 제 2 프로세싱 주기 (542) 의 레인 "2" (510) 에서, 지시자 "R_T0_D0" 에 의해 지시되는 바와 같이, 16 개의 데이터 단편이 뒤따른다. 특히, 16 개의 데이터 단편 (R_T0_D0 내지 R_T0_D5) 중6 개가 제 2 프로세싱 주기 (542) 의 레인 (2-7) 에 위치된다. 따라서, 제 2 프로세싱 주기 (542) 동안, 제 1 소스로부터의 데이터의 나머지 부분이 데이터 블록 구조의 제 1 섹션에 위치되고, 제 2 소스로부터의 데이터의 일부가 데이터 블록 구조의 제 2 섹션에 위치된다.
제 3 프로세싱 주기 (544) 가 R_T0 에 의해 전부 소비되고, 그 주기 동안, 중지점은 발생하지 않는다. 다운스트림 트랜잭션의 중지점은 4 번째 프로세싱 주기 (546) 의 레인 "2" (510) 의 시작점까지 발생하지 않는다. 다운스트림 트랜잭션의 중지점 후에, "T1" 으로 명시되는, 제 2 로컬 트랜잭션에 대한 10 개의 로컬 데이터 중 5 개, 및 헤더가 4 번째 및 5 번째 프로세싱 주기 (546, 548) 동안 어셈블링된다.
도 5 에서 설명되는 바와 같이, 다중 소스로부터의 데이터가 레인에 위치되 어 특정 데이터 블록 전송 주기 동안 발송될 수 있다. 이는 프로세싱 주기 (542 및 546) 동안에 특히 설명된다. 일 실시형태에서, 만약 제 1 소스로부터의 데이터 (예를 들어, 로컬 데이터 또는 다운스트림 데이터) 가 모든 레인들보다 덜 소비한다면, 제 2 소스로부터의 데이터 (예를 들어, 다운스트림 데이터 또는 로컬 데이터) 는 남아있는, 활용되는 레인에 위치될 수 있다. 따라서, 제 1 소스 데이터 및 제 2 소스 데이터 모두는 단일 데이터 블록 전송 주기 동안 업스트림 링크 상에서 송신될 수 있다. 언급한 다른 방법으로, 제 1 소스 데이터는 데이터 블록의 제 1 섹션에 위치되고, 제 2 소스 데이터는 데이터 블록의 제 2 소스에 위치되며, 여기서 제 2 섹션은 다음 레인에서 시작되고, 제 1 섹션에 인접한다. 본 발명의 실시형태에 의해 제공되는 것과 같은, 동일한 데이터 블록 내의 다중 소스로부터의 데이터를 위치시키는 이 기능은, 데이터 리턴의 대기시간을 감소시키고 링크 버스 대역의 활용성을 증가시킨다.
도 4 에서 설명되는 실시형태의 작동이 도 5 에 설명되는 예와 결합하여 더욱 상세히 설명될 것이다. 제 1 프로세싱 주기 (540) 동안, 제 1 로컬 트랜잭션 ("L_T0") 과 연관되는 로컬 데이터가 로컬 데이터 신호 (504) 의 상태에 의해 이용가능한 것으로 표시된다. 또한, 제 1 다운스트림 트랜잭션 ("R_T0") 과 연관된 다운스트림 데이터가 다운스트림 데이터 신호 (506) 의 상태에 의해 이용가능한 것으로 표시된다.
또한 도 4 를 참조하면, 로컬 데이터 신호 (504) 는 로컬 데이터 버퍼 (410) 에 저장되는 데이터에 대응하고, 다운스트림 데이터 신호 (506) 은 다운스트림 데 이터 버퍼 (420) 에 저장되는 데이터에 대응한다. 로컬 데이터 스토브 (404) 가 데이터가 로컬 소스로부터 이용가능함을 표시할 때, 로컬 조정 논리 수단 (414) 은 버스 액세스 요청 (471) 을 내부 소스 조정 수단 (416) 으로 송신한다. 유사하게, 다운스트림 데이터 스토브 (408) 가 데이터가 다운스트림 소스로부터 이용가능함을 표시할 때, 다운스트림 조정 논리 수단 (422) 도 버스 액세스 요청 (461) 을 내부 소스 조정 수단 (416) 으로 송신한다.
내부 소스 조정 수단 (416) 은 다양한 척도를 사용하여 임의의 소정 프로세싱 주기 동안 누가 버스를 허용받았는지를 판단한다. 내부 소스 조정 수단 (416) 이 특정 소스로 버스를 허용하는 것을 결정했을 때, 내부 소스 조정 수단 (416) 은 버스 그랜트 신호를 그 소스로 송신한다. 예를 들면, 도 5 에 설명된 바와 같이, 로컬 데이터 (504; L_T0) 가 처음으로 버스를 허용받는다. 따라서, 내부 소스 조정 수단 (416) 은 버스 그랜트 신호 (474) 를 로컬 조정 논리 수단 (414) 으로 송신한다. 일 실시형태에서, 버스 그랜트 신호 (474) 는 데이터가 실제로 데이터 블록에 위치되는 프로세싱 주기 (예를 들어, 프로세싱 주기 (540)) 동안 송신된다. 다른 실시형태에서, 신호 (474) 가 이전의 프로세싱 주기 동안 송신될 수 있다.
또한, 내부 소스 조정 수단 (416) 은 이하에 더 설명되는, 위치 표시기를 송신하고, 이는 어느 레인에서 헤더 또는 데이터가 처음으로 위치되는지를 로컬 조정 논리 수단 (414) 이 알 수 있게 한다. 일 실시형태에서, 내부 소스 조정 수단 (416) 은 이 표시를 "next lane in" 신호 (475) 의 형태로 로컬 조정 논리 수단 (414) 에 송신한다. 도 5 의 예에서, 제 1 프로세싱 주기 (540) 동안 "next lane in" 은 레인 "0" (508) 이다. 따라서, 레인 "0" 은 로컬 조정 논리 수단 (414) 이 트랜잭션 데이터에 대한 헤더가 위치되게 하는 레인이다. 이때 로컬 조정 논리 수단 (414) 은 데이터를 배열하여 제 1 프로세싱 주기 (540) 의 나머지 레인이 그의 제 1 트랜잭션에 대한 데이터 단편으로 채워질 것이다.
일 실시형태에서, 배열 로컬 출력 수단 (430) 은 로컬 조정 논리 수단 (414) 으로부터 신호 (476) 를 수신하고, 이는 다음 레인을 가리킨다. 이때 만약, 헤더가 프로세싱 주기 동안 어셈블링 된다면, 배열 로컬 출력 수단 (430) 은 헤더를 추출한다. 일 실시형태에서, 헤더에 포함되는 정보는 명령 큐 (queue; 412) 로부터 추출된다. 또한, 수단 (430) 은 로컬 데이터 버퍼 (410) 로부터, 데이터를 추출한다. 배열 로컬 출력 수단 (430) 은 헤더 및/또는 데이터를 로컬 예비 전송 데이터 블록 (440) 에 배열하고, 이는 데이터 블록/레인 구조를 갖는다. 예를 들어, 만약 next lane in 이 레인 "0" 이면, 배열 로컬 출력 수단 (430) 은 로컬 데이터 예비 전송 데이터 블록 (440) 의 레인 "0" 에 헤더를 위치시키고, 처음 7 개의 데이터 단편 (L_T0_D0 내지 L_T0_D6) 을 레인 "1" 내지 "7" 에 위치시킨다.
일단 그랜트가 로컬 조정 논리 수단 (414) 에 해당되면, 수단 (414) 은 데이터의 중지점을 예상한다. 즉, 어느 프로세싱 주기에서, 어느 레인에서, 트랜잭션에 대한 데이터가 완료되는지 판단한다. 일 실시형태에서, 이 예상은 로컬 조정 논리 수단 (414) 에 의한, 트랜잭션 크기의, 지식에 기초하고, 이는 사전에 명령 큐 (412) 에 저장된다. 일 실시형태에서, 로컬 조정 논리 수단 (414) 은 중지점을 모든 트랜잭션의 끝으로 예상한다. 다른 실시형태에서, (예를 들면, 만약 트랜잭션이 일정한 크기를 초과한다면) 트랜잭션에 대한 데이터의 리턴은 다중 부분에서 수행될 수 있고, 중지점은 데이터의 끝 전의 어디에선가 발생할 수 있다.
일 실시형태에서, 만약 로컬 조정 논리 수단 (414) 이 중지점이 바로 다음의 프로세싱 주기 안에 발생할 것을 예상한다면, 중지점이 로컬 중지점 표시자 신호 (472) 를 내부 소스 조정 수단으로 송신함으로써 발생할 것이라는 표시를 만들어낸다. 또한, 수단 (414) 은 데이터 블록 구조 내에, 데이터 끝의 위치의 표시를 만들어 낸다. 일 실시형태에서, 이는 레인 구조 내의, 어디서 중지점이 발생할 것인지의 표시자 (473) 를 송신함으로써 수행된다. 이 신호들은 각각, 도 5 의 신호 (526 및 524) 에 대응한다.
도 5 의 예에서, 로컬 데이터 조정 논리 수단 (414) 은 트랜잭션 크기가 8 개의 데이터 단편 (D0-D7) 을 포함한다는 것을 알고, 따라서 그것이 트랜잭션을 완료하기 위해, 제 2 프로세싱 주기 (542) 의 레인 "0"(508) 을 채우는 데만 필요할 것임을 판단한다. 따라서, 로컬 데이터 조정 논리 수단 (414) 은 중지점이 다음 프로세싱 주기 (542) 에서 발생할 것임을 판단할 것이다.
로컬 중지점 신호 (472; 도 4, 526; 도 5) 를 사용하여, 로컬 데이터 조정 논리 수단 (414) 은 중지점이 발생할 내부 소스 조정 수단 (416) 을 가리킨다. 설명되는 실시형태에서, 이 표시는 높은 상태로의 세팅 신호 (472, 526) 에 의해 만들이진다. 다른 실시형태에서, 낮은 세팅이 사용되거나, 어떤 다른 유형의 표시가 만들어질 수 있다. 로컬 중지점 신호 (472, 526) 가 2 진 표시 (즉, 바로 다음의 중지점 또는 아님) 이기 때문에, 신호는 단일 비트 또는 와이어로 표시될 수 있다.
또한, 다음 로컬 레인 신호 (473; 도 4, 524; 도 5) 를 사용하여, 로컬 데이터 조정 논리 수단 (414) 은 내부 소스 조정 수단 (416) 에 다음 중지점이 레인 구조 내의 어디에서 발생하는지를 표시한다. 일 실시형태에서, 다음 프로세싱 주기 (542) 에서, 이 표시는 레인이 처음으로 이용가능할 식별자의 형태로 나타난다. 예가 설명하는 바와 같이, 다음 로컬 레인 신호 (473, 524) 는, 만약 다른 소스가 버스 액세스를 허용받는다면, 레인 "1" (509) 이 또다른 소스에 이용가능하다는 것을 표시하면서, "1" 을 운반할 수 있다. 다른 실시형태에서, 다음 로컬 레인 신호 (473, 524) 는 어느 레인이 현재 트랜잭션에 대한 데이터의 마지막 단편 (예를 들어, 현재 예에서, "L_T0_D7") 을 운반할 것인지를 표시한다. 이러한 실시형태에서, 다음 로컬 레인 신호 (473, 524) 는 레인 "0" (508) 이 마지막 단편을 운발할 것이라는 것을 표시하면서, "0" 을 운반할 것이다.
다음 로컬 레인 신호 (473, 524) 가 레인의 식별을 표시하기 때문에, 신호 (473, 524) 에 사용될 수 있는 비트의 수는 이러한 표시를 만들기 위해서 충분하다. 8 개의 레인을 사용하는 일 실시형태에서, 정보 또는 와이어의 3 비트는 신호 (473, 524) 에 사용될 수 있다.
다양한 다른 실시형태에서, 내부 소스 조정 수단 (416) 은 중지점이 다음 프 로세싱 주기에서 발생할지, 어디에서 중지점이 발생할지 판단할 수 있도록 하는 다른 유형의 정보를 수신한다. 다른 실시형태에서, 내부 소스 조정 수단 (416) 은 이 판단들 중 하나 또는 모두를 스스로 할 수 있다. 다른 실시형태에서, 만약 중지점이 다음 프로세싱 주기 다음에 발생하는 프로세싱 주기 동안 발생할지라도, 조정 수단 (414, 416 또는 422) 은 어디서 중지점이 발생할지를 판단하고 표시한다. 복수의 다른 실시형태가 고려될 수도 있고, 그 실시형태들은 본 발명의 범위 내에 해당된다.
내부 소스 조정 수단 (416) 이 중지점이 다음 프로세싱 주기 (542) 에서 발생할 것임을 판단할 때, 수단 (416) 은 다음 주기 (542) 동안 버스를 동일한 소스 (즉, 현재 예에서, 로컬 소스) 또는 다른 소스 (현재 예에서, 다운스트림 소스) 로 허용함을 결정한다. 도 5 의 예에서, 내부 소스 조정 유닛 (416) 은 버스를 다운스트림 데이터 (506; R_T0) 로 허용함을 결정하고, 또한 이는 제 1 프로세싱 주기 (540) 로부터의 보류 요청도 갖는다. 따라서, 내부 소스 조정 유닛 (416) 은 버스 그랜트 신호 (464) 를 다운스트림 조정 논리 수단 (422) 으로 송신한다. 일 실시형태에서, 신호 (464) 는 제 2 프로세싱 주기 (542) 동안 송신된다. 다른 실시형태에서, 신호 (464) 가 더 먼저 (예를 들면, 제 1 프로세싱 주기 (540) 동안) 송신된다.
또한, 내부 소스 조정 수단 (416) 은 위치 표시자를 송신하고, 이는 다운스트림 조정 논리 수단 (422) 이 어느 레인에서 헤더 또는 데이터가 처음으로 위치되는지 알 수 있도록 한다. 일 실시형태에서, 내부 소스 조정 수단 (416) 은 이 표시를 next lane in 신호 (465) 의 형태로 다운스트림 조정 논리 수단 (422) 에 송신한다. next lane in 신호 (465) 는 "레인 식별자" 를 포함하고, 이는 레인을 식별하는 정수이다. 예를 들면, 데이터 블록 구조 내에 8 개의 레인이 존재하는 예에서, 레인 식별자는 0 부터 7 까지의 정수일 수 있다. 다른 실시형태에서, 데이터 구조 내의 비트 수 (예를 들어, 256 비트 데이터 구조에 대해 0 부터 255 까지) 또는 중지점 위치의 어떤 다른 표시가 송신될 수 있다.
일 실시형태에서, 이전의 프로세싱 주기 (540) 동안, next lane in 신호 (465) 는 미리 허용된 소스에 의해 송신되는 다음 로컬 레인 신호 (524) 에 대응된다. 이전에 설명된 바와 같이, 이전의 프로세싱 주기 동안 로컬 조정 논리 수단 (414) 에 의해 송신되는 다음 로컬 레인 신호 (524) 는 "1" 이었고, 이는 로컬 데이터의 중지점 후에 레인 "1" (509) 이 처음으로 이용가능하다는 것을 의미한다.
다른 실시형태에서, 정확히 동일하지 않을 수 있을지라도, next lane in 신호 (465) 는 다음 로컬 레인 신호 (524) 의 값에 기초하는 값일 수 있다. 예를 들면, 제한의 방식에 의하는 것은 아니나, 다음 로컬 레인 신호 (524) 는 로컬 데이터가 소비될 다음 레인을 표시할 수도 있고, next lane in 신호 (465) 는 다운스트림 데이터가 처음으로 채워지는 제 1 레인을 표시할 수 있다. 또한, 다음 로컬 레인 신호 및 next lane in 신호가 레인 식별자가 아닌 다른 방식으로 표시될 수 있다. 예를 들면, 이 둘 중 하나 또는 모두가 데이터 블록 내에, 비트 위치를 표시하거나, 어떤 다른 방식으로 표시될 수도 있다.
도 5 의 예에서, 제 2 프로세싱 주기 (542) 에 대한 "next lane in" 은 레인 "1"(509) 이고, 이는 프로세싱 주기 (540) 동안 표시된다. 따라서, 레인 "1" 은 다운스트림 조정 논리 수단 (422) 이 트랜잭션 데이터가 위치되도록 하는 레인이다. 이때 다운스트림 조정 논리 수단 (422) 은 데이터를 배열하여 제 2 프로세싱 주기 (542) 에 대한 나머지 레인이 제 1 트랜잭션에 대한 데이터로 채워질 수 있도록 한다.
일단 그랜트가 다운스트림 조정 논리 수단 (422) 에 해당된다면, 데이터의 중지점을 예상한다. 일 실시형태에서, 이 예상은 다운스트림 조정 논리 수단 (422) 에 의한, 트랜잭션 크기의, 지식에 기초하고, 이는 사전에 명령 큐 (412) 에 저장된다. 설명되는 예에서, 트랜잭션 크기는 16 개의 데이터 단편이다. 따라서, 중지점은 제 3 프로세싱 주기 (544; 즉, 다음 프로세싱 주기) 동안 발생하지 않을 것이다. 대신에, 예상되는 중지점은 제 4 프로세싱 주기 (546) 에서 발생한다. 또한, 트랜잭션을 완료하기 위해, 다운스트림 데이터 조정 논리 수단 (422) 은 트랜잭션 크기가 16 개의 데이터 단편 (D0-D15) 을 포함한다는 것을 알고, 따라서 그것이 제 4 프로세싱 주기 (546) 의 레인 "0" 및 "1" 을 채울 것임을 판단한다.
프로세싱 주기 (542) 를 참조하면, 다운스트림 조정 논리 수단 (422) 은 나머지 인접 레인이 헤더 및 데이터 단편으로 채워지도록 야기한다. 그러나, 중지점이 다음 프로세싱 주기 (544) 동안 발생하지 않기 때문에, 중지점이 곧 등장한다는 것이, 프로세싱 주기 (542) 동안, 다운스트림 중지점 신호 (462, 530) 를 통해 표시되지 않는다. 대신에, 이하에 논의되는 바와 같이, 이 표시가 프로세싱 주기 (544) 동안 만들어진다.
프로세싱 주기 (544) 동안, 다운스트림 조정 논리 수단 (422) 은 모든 데이터 블록이 트랜잭션 데이터 (D6-D13) 로 채워지도록 야기한다. 이제, 중지점이 다음 프로세싱 주기 (546) 동안 발생하지 않기 때문에, 다운스트림 조정 논리 수단 (422) 은, 다운스트림 중지점 신호 (462, 530) 를 통해, 중지점이 곧 등장함을 표시한다. 또한, 다운스트림 조정 논리 수단 (422) 은, 다음 다운스트림 레인 신호 (463, 528) 를 통해, 중지점의 위치를 표시한다. 도 5 의 예에서의 다음 다운스트림 레인 신호 (528) 가 표시하는 바와 같이, 제 4 프로세싱 주기 (546) 동안 중지점이 레인 "2" (510) 에서 발생할 것이다.
내부 소스 조정 수단 (416) 이 중지점이 다음 프로세싱 주기 (546) 에서 발생할 것이라는 것을 (신호 (530) 를 통해) 판단할 때, 수단 (416) 은 다음 주기 (546) 동안 버스가 동일한 소스 (즉, 현재의 예에서, 다운스트림 소스) 또는 다른 소스 (즉, 현재의 예에서, 로컬 소스) 에 허용됨을 결정한다. 도 5 의 예에서, 내부 소스 조정 유닛 (416) 은 버스가 로컬 데이터 (506; R_T1) 에 허용됨을 결정하고, 이는 제 2 프로세싱 주기 (542) 로부터의 보류 요청을 갖는다. 이때 프로세스는 계속해서 스스로 반복한다.
위에 논의된 바와 같이, 로컬 조정 논리 수단 (414) 및 다운스트림 조정 논리 수단 (422) 은 데이터를 배열하여 임의의 소정 프로세스 주기 동안, 데이터 블록의 레인이 정확하게 로컬 또는 다운스트림 데이터로 채워지도록 한다. 일 실시형태에서, 제 2 프로세싱 주기 (542; 도 5) 의 예를 이용하여, 이는 다음과 같이 수행된다.
배열 다운스트림 출력 수단 (432) 은 로컬 조정 논리 수단 (414) 로부터 신호 (466) 를 수신하고, 이는 다음 레인을 표시한다. 만약 헤더가 그 프로세싱 주기에서 어셈블링 된다면, 배열 다운스트림 출력 수단 (432) 은 그 헤더를 추출한다. 일 실시형태에서, 헤더에 포함되는 정보는 명령 큐 (412) 로부터 추출된다. 또한, 수단 (432) 은 명령 큐 (412) 로부터 데이터를 추출한다. 배열 다운스트림 출력 수단 (432) 은 헤더 및/또는 데이터를 다운스트림 예비 전송 데이터 블록 (442) 으로 배열하고, 이는 데이터 블록/레인 구조를 갖는다. 예를 들면, 만약 next lane in 이 레인 "1" 이면, 배열 다운스트림 출력 수단 (432) 은 헤더를 다운스트림 예비 전송 데이터 블록 (442) 의 레인 "1" 에 위치시키고, 처음 6 개 데이터 단편 (R_T0_D0 내지 R_T0_D5) 을 레인 "2" 내지 "7" 에 위치시킬 것이다.
이전에 논의된 바와 같이, 데이터 블록의 레인 "0" 이 로컬 소스로부터의 나머지 데이터에 할당된다. 따라서, 배열 로컬 출력 수단 (430) 은 그 나머지 데이터를 로컬 예비 전송 데이터 블록 (440) 에 위치시킨다. 특히, 배열 로컬 출력 수단 (430) 은 트랜잭션으로부터의 마지막 데이터 단편 (L_T0_D7) 을 로컬 예비 전송 데이터 블록 (440) 의 레인 "0" 에 위치시킨다.
예비 전송 데이터 블록 (440, 442) 내의 데이터를 다중 송신하기 위해, 내부 소스 조정 수단 (416) 은 "로컬/다운스트림 선택" 신호 (460) 를 데이터 어셈블리 수단 (450) 으로 송신한다. 데이터 어셈블리 수단 (450) 은 데이터 블록 전송 주기 동안 업스트림 링크 버스 (452) 를 통해 데이터를 송신하고 데이터를 어셈블링하는 수단을 포함한다.
일 실시형태에서, 로컬/다운스트림 선택 신호 (460) 는 데이터 블록 구조의 레인의 수에 대응하는 복수의 비트를 갖는 신호이다. 주어진 예에서, 로컬/다운스트림 선택 신호 (460) 는 8 비트 신호이고, 여기서 각각의 비트는 레인에 대응한다. 만약 비트가 제 1 상태 (예를 들어, 0) 에 있다면, 로컬 예비 전송 데이터 블록 (440) 의 대응하는 레인으로부터 데이터를 추출하는 데이터 어셈블리 수단 (450) 을 표시할 것이고, 만약 비트가 제 2 상태 (예를 들어, 1) 에 있다면, 데이터가 다운스트림 예비 전송 데이터 블록 (442) 의 대응하는 레인으로부터 추출된다는 것을 표시하거나, 그 반대이다.
예를 들어, 로컬/다운스트림 선택 신호 (460) 의 최상위 비트가 레인 "0" 에 대응하고, 신호의 최하위 비트가 레인 "7" 에 대응한다는 것으로 가정한다. 또한 "0" 의 값이 로컬 소스를 표시하고, "1" 의 값이 다운스트림 소스를 표시한다는 것으로 가정한다. 제 2 프로세싱 주기 (542; 도 2) 에 대해, 로컬/다운스트림 선택 신호 (460) 는 "01111111" 의 값을 갖는다. 제 4 프로세싱 주기 (546) 에 대해, 신호 (460) 는 "11000000" 의 값을 갖는다.
다른 실시형태에서, 어느 비트가 어느 특정 레인에 대응되는 지는 상이할 수 있다. 또한, "1" 의 값은 로컬 소스를 표시할 수 있고, "0" 의 값은 로컬 소스를 표시할 수 있다. 다른 실시형태에서, 데이터 어셈블리 수단 (450) 은 상이하게 포맷되는 정보를 이용하여 어느 소스가 어느 레인에 사용되는지를 판단할 수 있다. 다른 실시형태에서, 분리된 로컬 예비 전송 데이터 블록 (440) 및 다운스트림 예비 전송 데이터 블록 (442) 이 사용되지 않을 수도 있다. 대신에, 로컬 및 다운스트림 소스로부터의 데이터가 단일 예비 전송 데이터 블록 (미도시) 에 직접적으로 위치될 수 있다. 이 실시형태에서, 데이터 어셈블리 수단 (450) 에 레인의 구성에 대한 정보 (즉, 어느 소스가 어느 레인에 허용되는지) 를 알리는 것은 필요하지 않다. 대신에, 데이터 어셈블리 수단 (450) 은 간단히 단일 예비 전송 데이터 블록의 데이터를 업스트림 링크 (452) 에 제공한다.
일 실시형태에서, 내부 클록 신호 (502) 는 링크 버스 클록보다 낮은 주파수로 작동하고, 링크 버스 클록 주파수는 대략 내부 클록 신호 (502) 주파수의 정수 배이다. 예를 들면, 제한의 방식에 의함은 아니나, 내부 클록 신호 (502) 는 메가헤르츠 (MHz) 범위의 주파수로 작동하고, 링크 버스 클록은 기가헤르츠 (GHz) 범위의 주파수로 작동할 수 있다. 내부 클록 및/또는 링크 버스 클록은 또한, 더 높거나 더 낮은 데이터 주파수로 작동할 수 있다. 또한, 다른 실시형태에서, 클록은 대략 동일한 주파수로 작동할 수 있다.
각각의 링크 버스 클록 사이클에서, 데이터 어셈블리 수단 (450) 에 의해 제공되는 데이터는 업스트림 링크 버스 (452) 를 통해 송신될 수 있다. 일 실시형태에서, 하나의 데이터 블록은 단일 "데이터 블록 전송 주기" 동안 업스트림 링크 버스 (452) 를 통해 송신되고, 여기서 데이터 블록 전송 주기는 하나 또는 다중 링크 버스 클록 사이클의 길이일 수 있다.
예를 들면, 제한의 방식에 의함은 아니나, 각각의 데이터 블록이 64 비트의 데이터를 포함한다고 가정한다. 만약 링크 버스가 32 비트의 너비라면, 2 개의 버스 클록 사이클은 하나의 데이터 블록을 송신하는데 사용될 수 있다. 이 예에서, 프로세싱 주기 (예를 들면, 주기 (540)) 가 하나의 내부 클록 사이클의 길이임을 가정하면, 링크 버스 클록의 주파수는 내부 클록 주파수의 2 배일 수 있고, 그런 경우가 아닐 수도 있다. 예를 들어, 만약 내부 클록이 400 MHz 로 작동한다면, 링크 버스 클록은 약 800 MHz 로 작동할 수 있다.
다른 예를 사용하면, 만약 데이터 블록이 256 비트의 너비이고, 링크 버스가 16 비트의 너비라면, 16 개의 링크 버스 클록 사이클은 하나의 데이터 블록에 사용될 수 있다. 따라서, 단일 데이터 블록 전송 주기는 16 개의 버스 클록 사이클의 길이이다. 이 예에서, 링크 버스 클록의 주파수는 내부 클록 주파수의 16 배일 수 있다. 예를 들면, 만약 내부 클록이 400 MHz 로 작동한다면, 링크 버스 클록은 약 6.4 GHz 로 작동한다.
상기 예는 링크 버스의 너비에 대응하는 복수의 비트가 각각의 링크 버스 클록 사이클에서 (예를 들면, 라이징 또는 폴링 클록 에지에서) 발송됨을 가정한다. 다른 실시형태에서, 다중 세트의 비트는 각각의 클록 사이클에서 (예를 들면, 라이징 및 폴링 클록 에지 모두에서) 발송될 수 있다. 이 다른 실시형태에서, 데이터 블록 전송 주기의 기간은 상기에 주어진 예와 상이하다.
로컬, 다운스트림, 및 내부 소스 조정 논리 수단 (412, 422, 416) 의 어떤 기능은 흐름도의 형태로 용이하게 묘사될 수 있는 방식으로 수행될 수 있다. 따라서 다양한 실시형태의 더 깊은 이해를 제공하기 위해, 도 6 및 7 이 설명된다.
본 발명의 일 실시형태에 따라, 도 6 은 버스로의 액세스를 요청하는 방법의 흐름도를 설명한다. 일 실시형태에서, 모든 또는 일부의 방법이 로컬 조정 논리 수단 (414; 도 4) 및/또는 다운스트림 조정 논리 수단 (422; 도 4) 에 의해 수행될 수 있다. 다른 실시형태에서, 다른 기능적인 요소는 모든 또는 일부의 방법을 수행할 수 있다. 설명의 목적을 위해, "제 1 소스" 및 "제 2 소스" 라는 용어가 업스트림 버스로의 액세스를 요청하는 엔티티를 설명하는데 사용된다. 이 용어들은 특히 로컬 또는 다운스트림 조정 논리 수단 (414, 422) 을 식별함을 위미하지는 않는다.
이 방법은, 블록 (602) 에서, 제 1 소스로부터의 데이터가 업스트림 링크 버스를 통한 전송에 이용가능한지 여부를 판단함으로써 시작된다. 일 실시형태에서, 이 판단은 데이터 스트로브 신호 (예를 들면, 스트로브 (404, 408; 도 4)) 의 상태로부터 이루어진다. 다른 실시형태에서, 그 판단은 버퍼 빈/비지 않은 신호 (buffer empty/not empty signal; 예를 들면, 신호 (477, 467, 도 4)) 로부터 이루어질 수 있다. 그 판단은 다른 실시형태에서, 다른 방법으로도 이루어질 수 있다. 만약 어떠한 제 1 소스 데이터도 이용가능하지 않다면, 이 방법은 대기할 것이다.
블록 (604) 에서, 제 1 소스 데이터가 이용가능하다면, 제 1 소스는 버스 액세스 요청을 송신할 것이다. 일 실시형태에서, 요청은 내부 소스 조정 수단 (416; 도 4) 으로 송신된다. 또한, 내부 소스 조정 수단 (416) 은 특정 내부 프로세싱 주기 동안, 다른 소스로부터 요청을 수신할 수 있다. 내부 소스 조정 수단 (416) 은 착신 버스 액세스 요청, 및 그랜트 액세스를 조정하는 역할을 한다.
일 실시형태에서, 블록 (606) 에서, 제 1 소스는 내부 소스 조정 수단 (416) 으로부터의 그랜트 표시를 대기한다. 또한, 액세스가 허용될 때, 제 1 소스는 내부 소스 조정 수단 (416) 으로부터 다음 레인 가용 표시자를 찾는다. 다음 레인 가용 표시자는 전송을 위해 구성된 데이터 블록 내의, 어디서부터 헤더 및/또는 데이터를 위치시키는 지를 제 1 소스에 나타낸다.
따라서, 블록 (608) 에서, 제 1 소스는 데이터 블록 내에 데이터를 배열한다. 일 실시형태에서, 데이터는 하나 이상의 예비 전송 데이터 블록 (예를 들어, 블록 (440, 442; 도 4)) 내에 배열된다. 몇 개의 프로세싱 주기 동안, 최소한 2 개의 소스는 데이터 블록 내에 데이터를 위치시킨다.
블록 (610) 에서, 제 1 소스의 트랜잭션이 다음 프로세싱 주기 동안 완료될 지 여부의 판단이 이루어진다. 만약 그렇지 않다면, 제 1 소스는 계속해서 데이터를 다음 데이터 블록 내에 배열할 것이다. 트랜잭션이 그 프로세싱 주기 동안 완료되지 않기 때문에, 다음 데이터 블록의 모든 레인이 제 1 소스에 의해 소비된다. 그 후 이 절차가 반복된다.
제 1 소스의 트랜잭션이 다음 프로세싱 주기 동안 완료될 것인지가 판단될 때, 블록 (612) 에서, 제 1 소스는 중지점이 발생할 것임을, 내부 소스 조정 유닛 (416; 도 4) 에 표시한다. 또한, 제 1 소스는 어디서 중지점이 발생할 것인지의 표시를 송신한다. 예를 들면, 제 1 소스는 트랜잭션의 끝 후에, 다음 레인 가용의 식별을 송신할 수 있다.
블록 (614) 에서, 다음 프로세싱 주기 동안, 제 1 소스는 임의의 나머지 데이터를 다음 데이터 블록의 제 1 섹션 내의 하나 이상의 인접 레인 내에, 배열한다. 만약 데이터가 남아있지 않는다면 (예를 들어, 중지점이 이전 주기의 마지막 레인 다음에 발생한다면), 제 1 소스가 다음 데이터 블록 내에 임의의 데이터를 위치시키지 않을 것이다. 그 후 이 방법이 반복된다.
만약 내부 소스 조정 유닛 (416; 도 4) 이 버스를 제 2 소스 다음에 허용함을 결정한다면, 제 2 소스로부터의 데이터는 데이터 블록의 제 2 섹션 내의 하나 이상의 인접 레인 내에 위치될 것이고, 여기서 제 2 섹션은 다음 레인에서 시작되며, 이는 제 1 섹션에 인접한다. 일단 데이터 블록이 완료되면, 제 1 소스 데이터 및 제 2 소스 데이터는 버스를 통해 데이터 블록 전송 주기 (즉, 하나 이상의 링크 버스 클록 사이클) 동안 송신된다.
도 7 은 본 발명의 일 실시형태에 따른, 버스로의 액세스를 허용하는 방법의 흐름도를 설명한다. 일 실시형태에서, 모든 또는 일부의 방법이 내부 소스 조정 논리 수단 (416; 도 4) 에 의해 수행될 수 있다. 다른 실시형태에서, 다른 기능적 요소가 모든 또는 일부의 방법을 수행할 수 있다.
그 방법은, 블록 (702) 에서, 버스 액세스 요청을 제 1 소스로부터 수신할 때 시작한다. 예를 들면, 버스 액세스 요청은 로컬 조정 논리 수단 (414; 도 4) 또는 다운스트림 조정 논리 수단 (422; 도 4) 에 의해 만들어진다. 상이한 시간에서, 내부 소스 조정 논리 수단 (416) 은 요청자가 아직 버스로의 액세스를 허용하지 않았음을 의미하는, 영 (zero) 부터 많은 버스 액세스 요청 보류를 갖을 수 있다.
블록 (704) 에서, 버스가 휴지기 (idle) 인지 여부의 판단이 이루어진다. 일 실시형태에서, 버스는 어떠한 다른 소스도 버스에서 일반적으로 전송되지 않고, 어떠한 다른 요청도 보류하지 않는 고려되는 휴지기이다. 만약 버스가 휴지기이면, 블록 (714) 에서, 내부 소스 조정 수단 (416) 은 제 1 소스에, 버스로의 액세스가 허용되었음을 표시한다. 또한, 다른 소스가 그 프로세싱 주기 동안 버스에서의 전송을 완료시키는 경우에서, 내부 소스 조정 수단 (416) 은 어디서 중지점이 발생하는지 (예를 들어, 다음 레인 가용의 식별) 를 표시할 수도 있다.
블록 (718) 에서, 내부 소스 조정 수단 (416; 도 4) 은 송신될 데이터 블록 내에 데이터의 어셈블리 및 전송을 제어할 수도 있다. 일 실시형태에서, 이는 로컬/다운스트림 선택 신호 (460; 도 4) 를, 다중 송신하는 역할을 하고 업스트림 링크 버스를 통해 데이터를 송신하는 기능적 요소 (예를 들어, 데이터 어셈블리 수단 (450; 도 4)) 에 송신함으로써 성취된다. 그 후 이 방법이 종료된다.
블록 (704) 을 다시 참조하면, 만약 버스가 휴지기가 아니라면 (예를 들면, 다른 소스가 버스에서 송신되거나, 다른 요청이 보류한다면), 블록 (706) 에서, 중지점이 다음 프로세싱 주기 동안 발생할지 여부의 판단이 이루어진다. 일 실시형태에서, 이 판단은 버스를 이용하는 소스에 의해 제공되는 중지점 신호 (예를 들면, 신호 (472, 462; 도 4)) 를 관찰함으로써 이루어진다. 만약 중지점이 곧 등장하지 않는다면, 이 방법은 대기한다.
만약 일반적으로 버스를 사용하는 소스가 중지점이 다음 프로세싱 주기에 발 생할 것임을 표시한다면, 블록 (708) 에서, 중지점 위치의 식별이 판단된다. 일 실시형태에서, 중지점 위치는 버스를 사용하는 소스에 의해 제공되는 "next lane out" 신호 (예를 들면, 신호 (473, 463)) 를 관찰함으로써 판단된다.
블록 (710) 에서, 임의의 보류 요청이 조정되고, 누가 액세스를 허용받아 다음으로 버스를 사용할지를 판단한다. 조정 프로세스는 누가 버스로의 액세스를 획득하는지를 판단함에 있어서 다양한 척도를 사용할 수 있다.
블록 (712) 에서, 제 1 소스가 다음으로 버스를 통해서 데이터를 송신할 수 있는지 여부가 판단된다. 만약 그렇게 되면, 블록 (714 및 718) 이 수행되고, 이는 상기에 더욱 상세히 설명되었다. 그 후 이 방법이 종료된다.
만약 제 1 소스가 블록 (712) 에서 버스로의 액세스를 허용받지 않는다면, 블록 (716) 에서, 내부 소스 조정 수단 (416) 은 버스로 요청되는 액세스를 갖는 다른 소스에, 버스로의 액세스를 허용받는다는 것을 표시한다. 또한, 내부 소스 조정 수단 (416) 은 어디서 중지점이 발생할지 (예를 들면, 다음 레인 가용의 식별) 표시할 수도 있다. 그 후 블록 (718) 이 수행되고, 이 방법은 종료된다.
상기 설명되는 실시형태에서, 허브 아키텍처는 우선적으로 하드웨어에 구현되는 것으로 설명된다. 다른 실시형태에서, 마이크로 프로세서 또는 다른 연산 디바이스에 의해 실행될 때, 상기 설명되는 실시형태와 동일한 기능을 수행하고 동일한 결과를 생성하는 일련의 지시와 같이, 허브 아키텍처의 하나 이상이 요소가 펌웨어 또는 소프트웨어에 구현될 수 있다. 따라서, 허브의 기능을 수행하는 컴퓨터 실행가능 지시의 세트가 컴퓨터 가독 매체 (예를 들면, 하드 디스크, 광 또는 자기 디스크, ROM, RAM, 또는 실제로 임의의 다른 컴퓨터 가독 매체) 에 저장될 수 있다.
또한, 허브 아키텍처는 전자 시스템의 일부로서 포함될 수 있다. 도 8 은 본 발명의 일 실시형태에 따른, 전자 시스템을 설명한다. 도 8 및 다음의 논의는 본 발명의 실시형태가 구현될 수도 있는 적합한 환경의 간단한, 일반적인 설명을 제공한다. 당업자는 본 발명이 핸드헬드 (hand-held) 디바이스, 다중 프로세서 시스템, 마이크로프로세서 기반 또는 프로그램 가능 소비자 전자 기기, 네트워크 개인용 컴퓨터, 미니컴퓨터, 메인프레임 컴퓨터, 데이터베이스 컴퓨터 등을 포함하는, 다른 컴퓨터 시스템 구조로 실시될 수도 있다는 것을 알 수 있을 것이다.
도 8 에 도시되는 시스템은 범용 컴퓨터 (800) 를 포함하고, 이는 하나 이상의 프로세싱 유닛 (810), 노스 브리지 (812), 시스템 메모리 (814), 및 시스템 버스 (820) 를 포함하고, 이는 다양한 시스템 구성요소를 상호연결하고, 임의의 몇 가지 유형의 버스 구조일 수도 있다.
일 실시형태에서, 노스 브리지 (812) 는 시스템 버스 (820) 와 프로세싱 유닛 (810) 사이의 인터페이스 및 시스템 메모리 (814) 로서 동작한다. 따라서, 노스 브리지 (812) 는 입력/출력 (I/O) 제어기 및 메모리 제어기로서 작동한다. 일 실시형태에서, 노스 브리지 (812) 는 메모리 제어기 대신, 링크 제어기를 포함할 수도 있다. 노스 브리지 (812) 는 프로세서 버스 (816) 를 통해 프로세싱 유닛 (810) 과 통신하고, 메모리 버스 (818) 를 통해 시스템 메모리 (814) 와 통신한다.
시스템 메모리 (814) 는 본 발명의 일 실시형태에 따라 구성된다. 따라서, 시스템 메모리 (814) 는 하나 이상의 메모리 모듈 (824; 예를 들어 모듈 (208; 도 2)) 을 포함한다. 또한, 다양한 실시형태에서, 시스템 메모리 (814) 는 링크 제어기 (예를 들어, 제어기 (206; 도 2)), 및/또는 읽기 전용 메모리 (ROM; 825), 및/또는 랜덤 액세스 메모리 (RAM; 826) 를 포함할 수 있다.
또한 컴퓨터 (800) 는 미도시된, 하드 디스크로부터 읽고 쓰는 하드 디스크 드라이브 (827), 이동식 자기 디스크 (829) 로부터 읽고 쓰는 자기 디스크 드라이브 (828), 및 CD ROM 또는 다른 광 미디어와 같은, 이동식 광 디스크 (831) 로부터 읽고 쓰는 광 디스크 드라이브 (830) 를 포함할 수 있다. 하드 디스크 드라이브 (827), 자기 디스크 드라이브 (828), 및 광 디스크 드라이브 (830) 는 각각 하드 디스크 드라이브 인터페이스 (832), 자기 디스크 드라이브 인터페이스 (833), 및 광 드라이브 인터페이스 (834) 에 의해 시스템 버스 (820) 에 연결될 수 있다.
사용자는 요청 및 정보를 키보드 (840), 포인팅 디바이스 (840) 또는 다른 입력 디바이스 (미도시) 와 같은 입력 디바이스를 통해 컴퓨터 (800) 에 입력한다. 이 입력 디바이스 및 다른 입력 디바이스는 시스템 버스에 결합된 일련의 포트 인터페이스 (846) 를 통해 프로세싱 유닛 (810) 에 연결되거나, 패러렐 포트, 게임 포트 또는 유니버설 시리얼 버스 (USB) 와 같은, 다른 인터페이스에 의해 연결될 수 있다. 또한 모니터 (847) 또는 다른 유형의 디스플레이 디바이스도 비디오 어댑터 (848) 와 같은, 인터페이스를 통해 시스템 버스 (820) 에 연결될 수 있다. 모니터 외에, 시스템이 스피커 및 프린터와 같은, 다른 주변 출력 디바이스 (미도시) 도 포함할 수 있다.
컴퓨터 (800) 는 원격 컴퓨터 (849) 와 같은, 하나 이상의 원격 컴퓨터로의 논리적 연결을 사용하는 네트워크 환경에서 작동될 수도 있다. 컴퓨터 (800) 및 원격 컴퓨터 (849) 는 클라이언트, 서버, 라우터, 네트워크 개인 컴퓨터, 피어 (peer) 디바이스 또는 다른 일반적인 네트워크 노드일 수도 있다. 도 8 에 묘사되는 논리적 연결은 근거리 통신망 (LAN; 851) 및 원거리 통신망 (WAN; 852) 을 포함한다.
LAN 네트워크 환경에서 사용될 때, 컴퓨터 (800) 는 네트워크 인터페이스 또는 어댑터 (853) 를 통해 로컬 네트워크 (851) 에 연결된다. WAN 네트웨크 환경에서 사용될 때, 컴퓨터 (800) 는 통상적으로 모뎀 (854) 또는 WAN (852) 을 통해 통신을 설정하는 다른 수단을 포함한다. 내부 또는 외부일 수도 있는, 모뎀 (854) 은 시리얼 포트 인터페이스 (846) 를 통해 시스템 버스 (820) 에 연결된다. 도시되는 네트워크 연결이 예시적이고 컴퓨터들 간의 통신 링크를 설정하는 다른 수단이 사용될 수도 있다.
결론
데이터 패킷을 어셈블링하고 송신하는 방법 및 장치의 다양한 실시형태가, 전자 시스템 내의 실시형태의 결합에 대한 설명과 함께, 설명되었다. 당업자에 게 자명한 수정이 다양한 실시형태로 이루어져 동일한 결과를 성취할 수 있다. 특히, 제한의 방식에 의함은 아니나, 다양한, 설명되는 기능 블록 및 방법 단계들 사이의 배열 및 인터커넥션은 상이할 수 있고, 다른 상이한 기능 블록 및 단계들이 실질적으로 동일한 방식으로 사용되어, 동일한 기능과 동일한 결과를 성취할 수 있다. 또한, 실시형태가 결합되는 시스템의 유형이 상이할 수 있다 (예를 들면, 설명되는 것 대신 더 많거나 더 적은, 또는 상이한 구성요소가 포함될 수 있고, 그 구성요소들이 상이한 방법으로 상호연결될 수 있다). 또한, 일부 또는 모든 기능적인 구성요소들이 소프트웨어에 구현될 수 있다.
특정 실시형태가 여기에 설명되었을 지라도, 당업자는, 계산되어 동일한 결과를 성취하는 임의의 배열이 도시된 특정 실시형태를 치환할 수도 있다는 것을 알 것이다. 본 발명의 많은 적용이 당업자에게 명확할 것이다. 따라서, 이 응용은 본 발명의 임의의 적용 또는 변화를 커버한다. 본 발명이 다음의 청구항 및 그의 균등물에 의해서만 제한된다는 것이 명백하게 의도된다.

Claims (46)

  1. 하나 이상의 메모리 액세스 요청을 생성 및 송신하는 프로세서; 및
    통신 버스를 통해 함께 동작적으로 결합되고, 상기 하나 이상의 메모리 액세스 요청에서 요청되는 데이터를 리턴하는, 다중 메모리 모듈을 포함하고,
    상기 다중 메모리 모듈 각각은 데이터 소스이고,
    상기 다중 메모리 모듈의 메모리 모듈은,
    제 1 소스 데이터 및 제 2 소스 데이터가 이용가능함을 판단하고,
    데이터 블록의 제 1 섹션 내의 하나 이상의 제 1 인접 레인을 상기 제 1 소스 데이터의 적어도 일부에 할당하며, 여기서 상기 데이터 블록은 다중 레인 세트를 포함하고, 각각의 레인은 구성가능한 비트의 세트를 포함하며,
    데이터 블록의 제 2 섹션 내의 하나 이상의 제 2 인접 레인을 상기 제 2 소스 데이터의 적어도 일부에 할당하며, 여기서 상기 제 2 섹션은 상기 제 1 섹션에 인접한 다음 레인에서 시작하고,
    상기 통신 버스를 통해, 데이터 블록 전송 주기 동안, 상기 데이터 블록의 제 1 섹션 내의 제 1 소스 데이터의 적어도 일부, 및 상기 데이터 블록의 제 2 섹션 내의 제 2 소스 데이터의 적어도 일부를 송신하는, 전자 시스템.
  2. 제 1 항에 있어서,
    상기 다중 메모리 모듈 중 적어도 하나와 상기 프로세서 사이에 동작적으로 결합 (operatively coupled) 되고, 상기 하나 이상의 메모리 액세스 요청을 수신하며, 상기 하나 이상의 메모리 액세스 요청에 기초하여, 하나 이상의 메모리 액세스 명령을 생성하고 상기 통신 버스를 통해 상기 다중 메모리 모듈로 송신하는, 링크 제어기를 더 포함하는, 전자 시스템.
  3. 제 2 항에 있어서,
    상기 통신 버스를 더 포함하며,
    메모리 모듈은 상기 통신 버스의 제 1 부분에서 다운스트림 방향으로 하나 이상의 다른 메모리 모듈로부터 데이터를 수신하고,
    상기 메모리 모듈은 상기 제 1 소스 데이터의 적어도 일부 및 상기 제 2 소스 데이터의 적어도 일부를 상기 통신 버스의 제 2 부분에서 상기 링크 제어기를 향해 송신하는, 전자 시스템.
  4. 제 1 항에 있어서,
    메모리 모듈은,
    상기 통신 버스를 통해 제 2 메모리 모듈로부터 다운스트림 데이터를 수신하는 수단으로서, 상기 다운스트림 데이터는 상기 제 1 소스 데이터인, 수단;
    상기 메모리 모듈로 액세스 가능한 하나 이상의 메모리 스토리지 유닛으로부터 로컬 데이터를 수신하는 수단으로서, 상기 로컬 데이터는 상기 제 2 소스 데이터인, 수단; 및
    상기 다운스트림 데이터 및 상기 로컬 데이터를 상기 데이터 블록으로 어셈블링하는 수단
    을 포함하는, 전자 시스템.
  5. 제 1 항에 있어서,
    메모리 모듈은,
    상기 통신 버스를 통해 제 2 메모리 모듈로부터 다운스트림 데이터를 수신하는 수단으로서, 상기 다운스트림 데이터는 상기 제 2 소스 데이터인, 수단;
    상기 메모리 모듈로 액세스 가능한 하나 이상의 메모리 스토리지 유닛으로부터 로컬 데이터를 수신하는 수단으로서, 상기 로컬 데이터는 상기 제 1 소스 데이터인, 수단; 및
    상기 다운스트림 데이터 및 상기 로컬 데이터를 상기 데이터 블록으로 어셈블링하는 수단
    을 포함하는, 전자 시스템.
  6. 제 1 항에 있어서,
    상기 전자 시스템은 컴퓨터인, 전자 시스템.
  7. 로컬 데이터를 저장하는 하나 이상의 메모리 스토리지 유닛; 및
    허브를 포함하고,
    상기 허브는, 상기 하나 이상의 메모리 유닛, 및 상기 허브가 하나 이상의 다른 허브로부터 다운스트림 데이터를 수신할 수 있는 통신 버스에 동작적으로 결합되고,
    상기 허브는,
    제 1 소스 데이터 및 제 2 소스 데이터가 이용가능함을 판단하고,
    데이터 블록의 제 1 섹션 내의 하나 이상의 제 1 인접 레인을 상기 제 1 소스 데이터의 적어도 일부에 할당하고, 상기 데이터 블록은 다중 레인 세트를 포함하며, 각각의 레인은 구성 가능한 비트의 세트를 포함하며,
    상기 데이터 블록의 제 2 섹션 내의 하나 이상의 제 2 인접 레인을 상기 제 2 소스 데이터의 적어도 일부에 할당하며, 상기 제 2 섹션은 상기 제 1 섹션에 인접한 다음 레인에서 시작하고,
    상기 통신 버스를 통해, 데이터 블록 전송 주기 동안, 상기 데이터 블록의 제 1 섹션 내의 제 1 소스 데이터의 상기 적어도 일부, 및 상기 데이터 블록의 제 2 섹션 내의 제 2 소스 데이터의 상기 적어도 일부를 송신하는, 메모리 모듈.
  8. 제 7 항에 있어서,
    상기 하나 이상의 메모리 스토리지 유닛 및 상기 허브는 상기 통신 버스에 이동가능하게 연결할 수 있는 단일 기판상에 함께 배치되는, 메모리 모듈.
  9. 제 7 항에 있어서,
    상기 하나 이상의 메모리 스토리지 유닛은 하나 이상의 랜덤 액세스 메모리 구성요소를 포함하는, 메모리 모듈.
  10. 제 9 항에 있어서,
    상기 하나 이상의 랜덤 액세스 메모리 구성요소는 하나 이상의 동적 읽기 전용 메모리 (ROM) 구성요소를 포함하는, 메모리 모듈.
  11. 제 7 항에 있어서,
    상기 하나 이상의 메모리 스토리지 유닛은 하나 이상의 읽기 전용 메모리 구성요소를 포함하는, 메모리 모듈.
  12. 제 7 항에 있어서,
    상기 허브는 하나 이상의 주문형 집적 회로 (ASIC) 를 포함하는, 메모리 모듈.
  13. 제 7 항에 있어서,
    상기 허브는,
    상기 통신 버스를 통해 제 2 허브로부터 상기 다운스트림 데이터를 수신하는 수단으로서, 상기 다운스트림 데이터는 상기 제 1 소스 데이터인, 수단;
    상기 하나 이상의 메모리 스토리지 유닛으로부터 상기 로컬 데이터를 수신하 는 수단으로서, 상기 로컬 데이터는 상기 제 2 소스 데이터인, 수단; 및
    상기 다운스트림 데이터 및 상기 로컬 데이터를 상기 데이터 블록으로 어셈블링하는 수단
    을 포함하는, 메모리 모듈.
  14. 제 7 항에 있어서,
    상기 허브는,
    상기 통신 버스를 통해 제 2 허브로부터 상기 다운스트림 데이터를 수신하는 수단으로서, 상기 다운스트림 데이터는 상기 제 2 소스 데이터인, 수단;
    상기 하나 이상의 메모리 스토리지 유닛으로부터 상기 로컬 데이터를 수신하는 수단으로서, 상기 로컬 데이터는 상기 제 1 소스 데이터인, 수단; 및
    상기 다운스트림 데이터 및 상기 로컬 데이터를 상기 데이터 블록으로 어셈블링하는 수단
    을 포함하는, 메모리 모듈.
  15. 하나 이상의 메모리 스토리지 유닛으로부터 로컬 데이터를 수신하는 수단;
    통신 버스를 통해 하나 이상의 다운스트림 데이터 소스로부터 다운스트림 데이터를 수신하는 수단; 및
    상기 로컬 데이터 및 상기 다운스트림 데이터가 상기 통신 버스를 통해 어떻게 송신될지의 판단을 하는 수단을 포함하고,
    상기 판단은,
    데이터 블록의 제 1 섹션 내의 하나 이상의 제 1 인접 레인을 상기 로컬 데이터의 적어도 일부에 할당하고, 상기 데이터 블록은 다중 레인의 세트를 포함하며, 각각의 레인은 구성가능한 비트의 세트를 포함하고,
    상기 데이터 블록의 제 2 섹션 내의 하나 이상의 제 2 인접 레인을 상기 다운스트림 데이터의 적어도 일부에 할당하고, 상기 제 1 섹션과 상기 제 2 섹션은 인접한, 것
    을 포함하는, 데이터를 어셈블링하고 송신하는 장치.
  16. 제 15 항에 있어서,
    상기 통신 버스를 통해 상기 로컬 데이터를 송신하라는 제 1 액세스 요청을 생성하는 수단; 및
    상기 통신 버스를 통해 상기 다운스트림 데이터를 송신하라는 제 2 액세스 요청을 생성하는 수단을 더 포함하고,
    상기 판단을 하는 수단은 상기 제 1 액세스 요청 및 상기 제 2 액세스 요청을 수신하고, 상기 판단의 기초를 상기 제 1 액세스 요청 및 상기 제 2 액세스 요청에 두는, 데이터를 어셈블링하고 송신하는 장치.
  17. 제 15 항에 있어서,
    상기 판단에 따라, 상기 로컬 데이터 및 상기 다운스트림 데이터를 상기 데 이터 블록에 배열하는 수단; 및
    데이터 블록 전송 주기 동안 상기 통신 버스를 통해 상기 데이터 블록 내의 데이터를 송신하는 수단
    을 더 포함하는, 데이터를 어셈블링하고 송신하는 장치.
  18. 통신 버스를 통해 데이터를 송신하는 장치로서,
    제 1 데이터 소스로부터 제 1 소스 데이터를 수신하는 수단;
    제 2 데이터 소스로부터 제 2 소스 데이터를 수신하는 수단; 및
    상기 제 1 소스 데이터 및 상기 제 2 소스 데이터를 상기 통신 버스를 통해 송신하는 수단을 포함하고,
    상기 제 1 소스 데이터 및 상기 제 2 소스 데이터의 송신은,
    상기 통신 버스를 통해 상기 제 1 소스 데이터를 송신하고,
    상기 제 1 소스 데이터의 끝에 대응하는 제 1 중지점을 식별하고,
    상기 통신 버스를 통해 상기 제 2 소스 데이터를 상기 제 1 소스 데이터의 끝에 인접하게 송신하고,
    상기 제 2 소스 데이터의 끝에 대응하는 제 2 중지점을 식별하는 것을 포함하는, 통신 버스를 통해 데이터를 송신하는 장치.
  19. 제 18 항에 있어서,
    상기 제 1 소스 데이터를 수신하는 수단은 상기 통신 버스로부터 다운스트림 데이터를 수신하는 수단을 포함하고,
    상기 제 2 소스 데이터를 수신하는 수단은 하나 이상의 로컬 메모리 스토리지 유닛으로부터 로컬 데이터를 수신하는 수단을 포함하는, 통신 버스를 통해 데이터를 송신하는 장치.
  20. 제 18 항에 있어서,
    상기 통신 버스를 통한 상기 제 1 소스 데이터의 송신은,
    제 1 프로세싱 주기 동안 데이터 블록 구조 내에 상기 제 1 소스 데이터의 제 1 부분을 배열하고, 상기 데이터 블록 구조는 고정된 수의 인접하고, 구성가능한 비트를 포함하는 것; 및
    제 2 프로세싱 주기 동안 상기 데이터 블록 구조의 제 1 섹션 내에 상기 제 1 소스 데이터의 나머지 부분을 배열하고, 상기 제 1 섹션은 인접 비트의 제 1 세트를 포함하는 단계를 포함하는 것,
    을 포함하는, 통신 버스를 통해 데이터를 송신하는 장치.
  21. 제 20 항에 있어서,
    상기 제 1 중지점의 식별은,
    상기 제 2 프로세싱 주기 동안 상기 제 1 중지점을 상기 데이터 블록 구조의 상기 제 1 섹션의 끝으로서 식별하는 것을 포함하는, 통신 버스를 통해 데이터를 송신하는 장치.
  22. 제 21 항에 있어서,
    상기 통신 버스를 통한 상기 제 2 소스 데이터의 송신은,
    상기 제 2 프로세싱 주기 동안 상기 데이터 블록 구조의 제 2 섹션 내에 상기 제 2 소스 데이터의 제 1 부분을 배열하고, 상기 제 2 섹션은 상기 제 1 섹션에 인접하고, 상기 제 2 섹션은 인접 비트의 제 2 세트를 포함하는 것
    을 포함하는, 통신 버스를 통해 데이터를 송신하는 장치.
  23. 제 22 항에 있어서,
    상기 데이터 블록 구조는 고정된 수의 레인을 포함하고,
    각각의 레인은 동일한 수의 비트를 포함하며,
    상기 데이터 블록의 제 1 섹션은 상기 고정된 수의 레인의 제 1 세트를 포함하고,
    상기 데이터 블록 구조의 제 2 섹션은 상기 고정된 수의 레인의 제 2 세트를 포함하는, 통신 버스를 통해 데이터를 송신하는 장치.
  24. 통신 버스에서 데이터를 송신하는 방법으로서,
    제 1 프로세싱 주기 동안 데이터 블록 구조 내에 제 1 소스 데이터의 제 1 부분을 배열하는 단계로서, 상기 데이터 블록 구조는 고정된 수의 인접하고 구성가능한 비트를 포함하는, 단계;
    상기 통신 버스를 통해 상기 제 1 소스 데이터의 제 1 부분을 송신하는 단계;
    제 2 프로세싱 주기 동안 상기 데이터 블록 구조의 제 1 섹션 내에 상기 제 1 소스 데이터의 나머지 부분을 배열하는 단계로서, 상기 제 1 섹션은 인접 비트의 제 1 세트를 포함하는, 단계;
    상기 제 2 프로세싱 주기 동안 상기 데이터 블록 구조의 제 2 섹션 내에 제 2 소스 데이터의 제 1 부분을 배열하는 단계로서, 상기 제 2 섹션은 상기 제 1 섹션에 인접하고, 상기 제 2 섹션은 인접 비트의 제 2 세트를 포함하는 단계; 및
    상기 통신 버스를 통해 상기 제 1 소스의 나머지 부분 및 상기 제 2 소스의 제 1 부분을 송신하는 단계
    를 포함하는, 통신 버스에서 데이터를 송신하는 방법.
  25. 제 24 항에 있어서,
    상기 제 1 프로세싱 주기 동안, 상기 제 1 소스 데이터의 중지점이 상기 제 2 프로세싱 주기 동안 발생할 것임을 표시하는 단계를 더 포함하는, 통신 버스에서 데이터를 송신하는 방법.
  26. 제 24 항에 있어서,
    제 1 프로세싱 주기 동안, 상기 제 1 섹션의 끝의 위치를 표시하는 단계를 더 포함하는, 통신 버스에서 데이터를 송신하는 방법.
  27. 제 24 항에 있어서,
    상기 데이터 블록 구조는 고정된 수의 레인을 포함하고,
    각각의 레인은 동일한 수의 비트를 포함하며,
    상기 데이터 블록 구조의 제 1 섹션은 상기 고정된 수의 레인의 제 1 세트를 포함하고,
    상기 데이터 블록 구조의 제 2 섹션은 상기 고정된 수의 레인의 제 2 세트를 포함하는, 통신 버스에서 데이터를 송신하는 방법.
  28. 제 27 항에 있어서,
    상기 제 1 프로세싱 주기 동안, 상기 제 1 섹션의 마지막 레인에 대응하는 레인 식별자의 표시를 행하는 단계를 더 포함하는, 통신 버스에서 데이터를 송신하는 방법.
  29. 제 27 항에 있어서,
    상기 제 1 프로세싱 주기 동안, 상기 제 2 섹션의 제 1 레인에 대응하는 레인 식별자의 표시를 행하는 단계를 더 포함하는, 통신 버스에서 데이터를 송신하는 방법.
  30. 제 24 항에서 설명된 단계를 수행하는 컴퓨터 실행가능 명령을 갖는 컴퓨터 판독가능 매체.
  31. 제 1 소스 데이터 및 제 2 소스 데이터가 이용가능함을 판단하는 단계;
    데이터 블록의 제 1 섹션 내에 하나 이상의 제 1 인접 레인을 상기 제 1 소스 데이터의 적어도 일부에 할당하는 단계로서, 상기 데이터 블록은 다중 레인 세트를 포함하고, 각각의 레인은 구성가능한 비트의 세트를 포함하는, 단계;
    상기 데이터 블록의 제 2 섹션 내에 하나 이상의 제 2 인접 레인을 상기 제 2 소스 데이터의 적어도 일부에 할당하는 단계로서, 상기 제 2 섹션은 상기 제 1 섹션에 인접한 다음 레인에서 시작하는, 단계; 및
    데이터 블록 전송 주기 동안 통신 버스를 통해, 상기 데이터 블록의 제 1 섹션 내에 상기 제 1 소스 데이터의 상기 적어도 일부, 및 상기 데이터 블록의 제 2 섹션 내의 상기 제 2 소스 데이터의 상기 적어도 일부를 송신하는 단계
    를 포함하는 방법.
  32. 제 31 항에 있어서,
    상기 제 1 소스 데이터 및 상기 제 2 소스 데이터가 이용가능함을 판단하는 단계는,
    상기 제 1 소스 데이터가 제 1 데이터 소스로부터 이용가능하다는 제 1 표시자를 수신하는 단계; 및
    상기 제 2 소스 데이터가 제 2 데이터 소스로부터 이용가능하다는 제 2 표시 자를 수신하는 단계를 포함하는, 통신 버스에서 데이터를 송신하는 방법.
  33. 제 31 항에 있어서,
    상기 제 1 소스 데이터 및 상기 제 2 소스 데이터가 이용가능함을 판단하는 단계는,
    상기 통신 버스를 통해 상기 제 1 소스 데이터를 송신하라는 제 1 요청을 수신하는 단계; 및
    상기 통신 버스를 통해 상기 제 2 소스 데이터를 송신하라는 제 2 요청을 수신하는 단계를 포함하는, 통신 버스에서 데이터를 송신하는 방법.
  34. 제 31 항에 있어서,
    상기 하나 이상의 제 2 인접 레인을 할당하는 단계는,
    어느 레인이 다음의, 인접 레인인지의 식별을 가능하게 하는 정보를 수신하는 단계; 및
    복수의 레인을 상기 제 2 소스 데이터의 상기 적어도 일부에 할당하는 단계로서, 상기 레인 수만큼의 제 1 레인이 다음의, 인접 레인인 단계를 포함하는, 통신 버스에서 데이터를 송신하는 방법.
  35. 제 31 항에서 설명된 단계를 수행하는 컴퓨터 실행가능 명령을 갖는 컴퓨터 판독가능 매체.
  36. 데이터 블록 구조의 제 1 섹션 내의 제 1 소스로부터의 제 1 소스 데이터를 배열하는 단계로서, 상기 데이터 블록 구조는 고정된 수의 인접하고 구성가능한 비트를 포함하고, 상기 데이터 블록 구조 내의 데이터는 통신 버스에서 주기적으로 송신되는 단계;
    제 2 소스로부터의 제 2 소스 데이터가 상기 통신 버스를 통해 송신될 수 있음을 판단하는 단계;
    상기 통신 버스로의 액세스를 요청하여 상기 제 2 소스 데이터를 송신하는 단계;
    상기 데이터 블록 구조 내의 어디에 상기 제 2 소스 데이터의 적어도 일부가 위치되어야 하는지의 표시를 수신하는 단계;
    상기 표시에 따라 상기 데이터 블록 내의 제 2 소스 데이터의 상기 적어도 일부를 배열하여, 상기 제 2 소스 데이터의 상기 적어도 일부가 상기 제 1 섹션의 끝에 인접하는 상기 데이터 블록의 제 2 섹션을 점유하게 하는 단계; 및
    데이터 블록 전송 주기 동안 상기 통신 버스를 통해 상기 제 1 소스 데이터 및 상기 제 2 소스의 상기 적어도 일부를 송신하는 단계
    를 포함하는, 방법.
  37. 제 36 항에 있어서,
    상기 데이터 블록 구조는 고정된 수의 레인을 포함하고, 각각의 레인은 동일 한 수의 비트를 포함하며, 상기 데이터 블록 구조의 제 1 섹션은 고정된 수의 레인의 제 1 세트를 포함하고, 상기 데이터 블록 구조의 제 2 섹션은 고정된 수의 레인의 제 2 세트를 포함하는, 방법.
  38. 제 37 항에 있어서,
    상기 표시를 수신하는 단계는, 상기 제 1 섹션의 마지막 레인에 대응하는 레인 식별자를 수신하는 단계를 포함하는, 방법.
  39. 제 37 항에 있어서,
    상기 표시를 수신하는 단계는, 상기 제 2 섹션의 제 1 레인에 대응하는 레인 식별자를 수신하는 단계를 포함하는, 방법.
  40. 제 37 항에 있어서,
    상기 제 2 소스 데이터의 어디에서 중지점이 발생할지를 예상하는 단계를 더 포함하는, 방법.
  41. 제 36 항에서 설명된 단계를 수행하는 컴퓨터 실행가능 명령을 갖는 컴퓨터 판독가능 매체.
  42. 데이터 블록 구조의 제 1 섹션 내에 제 1 소스 데이터를 배열하는 단계로서, 상기 데이터 블록 구조는 고정된 수의 인접하고 구성가능한 비트를 포함하는, 단계;
    상기 통신 버스를 통해 제 2 소스 데이터를 송신하라는 요청을 수신하는 단계;
    상기 제 1 소스 데이터에서 중지점의 위치를 식별하는 단계;
    상기 중지점 후에 상기 데이터 블록 구조의 제 2 섹션 내에 상기 제 2 소스 데이터의 적어도 일부를 배열하는 단계로서, 상기 제 2 섹션은 상기 제 1 섹션의 끝에 인접하는, 단계; 및
    데이터 블록 전송 주기 동안 상기 통신 버스를 통해 상기 제 1 소스 데이터 및 상기 제 2 소스 데이터의 상기 적어도 일부를 송신하는 단계
    를 포함하는 방법.
  43. 제 42 항에 있어서,
    상기 데이터 블록 구조는 고정된 수의 레인을 포함하고,
    각각의 레인은 동일한 수의 비트를 포함하며,
    상기 데이터 블록 구조의 제 1 섹션은 고정된 수의 레인의 제 1 세트를 포함하고,
    상기 데이터 블록 구조의 제 2 섹션은 고정된 수의 레인의 제 2 세트를 포함하는, 방법.
  44. 제 43 항에 있어서,
    상기 위치를 식별하는 단계는, 상기 제 1 섹션의 마지막 레인에 대응하는 레인을 식별하는 단계를 포함하는, 방법.
  45. 제 43 항에 있어서,
    상기 위치를 식별하는 단계는, 상기 제 2 섹션의 제 1 레인에 대응하는 레인을 식별하는 단계를 포함하는, 방법.
  46. 제 42 항에서 설명된 단계를 수행하는 컴퓨터 실행가능 명령을 갖는 컴퓨터 판독가능 매체.
KR1020067009565A 2003-10-17 2004-10-18 다중 소스로부터의 데이터를 통신 버스를 통해 송신하는방법 및 장치 KR100825238B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/688,461 2003-10-17
US10/688,461 US7779212B2 (en) 2003-10-17 2003-10-17 Method and apparatus for sending data from multiple sources over a communications bus

Publications (2)

Publication Number Publication Date
KR20060100417A true KR20060100417A (ko) 2006-09-20
KR100825238B1 KR100825238B1 (ko) 2008-04-25

Family

ID=34465593

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020067009565A KR100825238B1 (ko) 2003-10-17 2004-10-18 다중 소스로부터의 데이터를 통신 버스를 통해 송신하는방법 및 장치

Country Status (8)

Country Link
US (5) US7779212B2 (ko)
EP (1) EP1678621B1 (ko)
JP (1) JP4466653B2 (ko)
KR (1) KR100825238B1 (ko)
CN (1) CN100487685C (ko)
AT (1) ATE428984T1 (ko)
DE (1) DE602004020647D1 (ko)
WO (1) WO2005038660A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9928129B2 (en) 2014-12-08 2018-03-27 SK Hynix Inc. Operation apparatus module

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040044508A1 (en) * 2002-08-29 2004-03-04 Hoffman Robert R. Method for generating commands for testing hardware device models
US7779212B2 (en) * 2003-10-17 2010-08-17 Micron Technology, Inc. Method and apparatus for sending data from multiple sources over a communications bus
US20050210185A1 (en) * 2004-03-18 2005-09-22 Kirsten Renick System and method for organizing data transfers with memory hub memory modules
US7296129B2 (en) 2004-07-30 2007-11-13 International Business Machines Corporation System, method and storage medium for providing a serialized memory interface with a bus repeater
US7778812B2 (en) * 2005-01-07 2010-08-17 Micron Technology, Inc. Selecting data to verify in hardware device model simulation test generation
US20070016698A1 (en) * 2005-06-22 2007-01-18 Vogt Pete D Memory channel response scheduling
US20070165457A1 (en) * 2005-09-30 2007-07-19 Jin-Ki Kim Nonvolatile memory system
US20070076502A1 (en) * 2005-09-30 2007-04-05 Pyeon Hong B Daisy chain cascading devices
US7652922B2 (en) 2005-09-30 2010-01-26 Mosaid Technologies Incorporated Multiple independent serial link memory
EP1932158A4 (en) 2005-09-30 2008-10-15 Mosaid Technologies Inc MEMORY WITH OUTPUT CONTROL
US7685392B2 (en) * 2005-11-28 2010-03-23 International Business Machines Corporation Providing indeterminate read data latency in a memory system
US7471538B2 (en) 2006-03-30 2008-12-30 Micron Technology, Inc. Memory module, system and method of making same
ES2498096T3 (es) * 2006-03-31 2014-09-24 Mosaid Technologies Incorporated Esquema de control de sistema de memoria Flash
US7844769B2 (en) * 2006-07-26 2010-11-30 International Business Machines Corporation Computer system having an apportionable data bus and daisy chained memory chips
US7620763B2 (en) * 2006-07-26 2009-11-17 International Business Machines Corporation Memory chip having an apportionable data bus
JP4476267B2 (ja) * 2006-10-06 2010-06-09 株式会社日立製作所 プロセッサ及びデータ転送ユニット
WO2008057557A2 (en) 2006-11-06 2008-05-15 Rambus Inc. Memory system supporting nonvolatile physical memory
JP5401444B2 (ja) 2007-03-30 2014-01-29 ラムバス・インコーポレーテッド 異なる種類の集積回路メモリ素子を有する階層メモリモジュールを含むシステム
CN100562021C (zh) * 2007-07-10 2009-11-18 北京易路联动技术有限公司 一种分布式可同步的多源数据的控制方法和装置
US8732360B2 (en) * 2007-11-26 2014-05-20 Spansion Llc System and method for accessing memory
EP2192495A1 (de) * 2008-11-11 2010-06-02 Thomson Licensing Verfahren zur Bearbeitung von Daten mittels Dreifach-Pufferung
CN101930788A (zh) * 2009-06-24 2010-12-29 鸿富锦精密工业(深圳)有限公司 移动存储设备及具有移动存储设备的存储装置
KR101796116B1 (ko) 2010-10-20 2017-11-10 삼성전자 주식회사 반도체 장치, 이를 포함하는 메모리 모듈, 메모리 시스템 및 그 동작방법
US9104690B2 (en) * 2011-01-27 2015-08-11 Micron Technology, Inc. Transactional memory
JP5895378B2 (ja) * 2011-06-28 2016-03-30 コニカミノルタ株式会社 データ記憶制御装置、データ記憶制御方法およびプログラム
EP3382556A1 (en) 2011-09-30 2018-10-03 INTEL Corporation Memory channel that supports near memory and far memory access
JP5678257B2 (ja) * 2012-01-23 2015-02-25 株式会社日立製作所 メモリモジュール
US9514006B1 (en) 2015-12-16 2016-12-06 International Business Machines Corporation Transaction tracking within a microprocessor
GB2553102B (en) * 2016-08-19 2020-05-20 Advanced Risc Mach Ltd A memory unit and method of operation of a memory unit to handle operation requests
US10679722B2 (en) 2016-08-26 2020-06-09 Sandisk Technologies Llc Storage system with several integrated components and method for use therewith
US11055241B2 (en) * 2017-11-06 2021-07-06 M31 Technology Corporation Integrated circuit having lanes interchangeable between clock and data lanes in clock forward interface receiver
US10599606B2 (en) 2018-03-29 2020-03-24 Nvidia Corp. 424 encoding schemes to reduce coupling and power noise on PAM-4 data buses
US11966348B2 (en) 2019-01-28 2024-04-23 Nvidia Corp. Reducing coupling and power noise on PAM-4 I/O interface
US11159153B2 (en) 2018-03-29 2021-10-26 Nvidia Corp. Data bus inversion (DBI) on pulse amplitude modulation (PAM) and reducing coupling and power noise on PAM-4 I/O
US10657094B2 (en) 2018-03-29 2020-05-19 Nvidia Corp. Relaxed 433 encoding to reduce coupling and power noise on PAM-4 data buses
JP7393095B2 (ja) * 2018-06-07 2023-12-06 トヨタ自動車株式会社 気体圧縮装置
US10623200B2 (en) 2018-07-20 2020-04-14 Nvidia Corp. Bus-invert coding with restricted hamming distance for multi-byte interfaces

Family Cites Families (90)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3798613A (en) 1971-10-27 1974-03-19 Ibm Controlling peripheral subsystems
US4965717A (en) 1988-12-09 1990-10-23 Tandem Computers Incorporated Multiple processor system having shared memory with private-write capability
EP0463966B1 (en) 1990-06-29 1998-11-25 Digital Equipment Corporation High-performance multi-processor having floating point unit and operation method
US5652723A (en) 1991-04-18 1997-07-29 Mitsubishi Denki Kabushiki Kaisha Semiconductor memory device
US6446164B1 (en) 1991-06-27 2002-09-03 Integrated Device Technology, Inc. Test mode accessing of an internal cache memory
US5410681A (en) 1991-11-20 1995-04-25 Apple Computer, Inc. Interpreter for performing remote testing of computer systems
US5414827A (en) 1991-12-19 1995-05-09 Opti, Inc. Automatic cache flush
US5553258A (en) 1992-04-24 1996-09-03 Digital Equipment Corporation Method and apparatus for forming an exchange address for a system with different size caches
US5542058A (en) 1992-07-06 1996-07-30 Digital Equipment Corporation Pipelined computer with operand context queue to simplify context-dependent execution flow
US5517627A (en) 1992-09-18 1996-05-14 3Com Corporation Read and write data aligner and method
US5448577A (en) 1992-10-30 1995-09-05 Intel Corporation Method for reliably storing non-data fields in a flash EEPROM memory array
JP3400824B2 (ja) 1992-11-06 2003-04-28 三菱電機株式会社 半導体記憶装置
CA2145363C (en) 1994-03-24 1999-07-13 Anthony Mark Jones Ram interface
US5675735A (en) * 1994-06-29 1997-10-07 Digital Equipment Corporation Method and apparatus for interconnecting network devices in a networking hub
US5600579A (en) 1994-07-08 1997-02-04 Apple Computer, Inc. Hardware simulation and design verification system and method
US5574907A (en) * 1994-11-30 1996-11-12 Microsoft Corporation Two-pass defragmentation of compressed hard disk data with a single data rewrite
US5872909A (en) 1995-01-24 1999-02-16 Wind River Systems, Inc. Logic analyzer for software
US5726918A (en) 1995-06-05 1998-03-10 Synopsys, Inc. Tool, system and method for dynamic timing analysis in a plural-instance digital system simulation
US6115747A (en) * 1995-11-13 2000-09-05 Roger E. Billings Computer network interface that merges remote data received from other computers with local data before transmitting the merged data to a network
US5758188A (en) 1995-11-21 1998-05-26 Quantum Corporation Synchronous DMA burst transfer protocol having the peripheral device toggle the strobe signal such that data is latched using both edges of the strobe signal
US6127990A (en) * 1995-11-28 2000-10-03 Vega Vista, Inc. Wearable display and methods for controlling same
US5768567A (en) 1996-05-14 1998-06-16 Mentor Graphics Corporation Optimizing hardware and software co-simulator
US5867733A (en) * 1996-06-04 1999-02-02 Micron Electronics, Inc. Mass data storage controller permitting data to be directly transferred between storage devices without transferring data to main memory and without transferring data over input-output bus
US5841967A (en) 1996-10-17 1998-11-24 Quickturn Design Systems, Inc. Method and apparatus for design verification using emulation and simulation
US6047331A (en) * 1997-02-19 2000-04-04 Massachusetts Institute Of Technology Method and apparatus for automatic protection switching
US6182258B1 (en) 1997-06-03 2001-01-30 Verisity Ltd. Method and apparatus for test generation during circuit design
US6076180A (en) 1997-06-23 2000-06-13 Micron Electronics, Inc. Method for testing a controller with random constraints
US5832418A (en) 1997-06-23 1998-11-03 Micron Electronics Apparatus for testing a controller with random contraints
US5966306A (en) 1997-07-07 1999-10-12 Motorola Inc. Method for verifying protocol conformance of an electrical interface
US6378047B1 (en) * 1997-07-07 2002-04-23 Micron Technology, Inc. System and method for invalidating set-associative cache memory with simultaneous set validity determination
US6131079A (en) 1997-10-01 2000-10-10 Lsi Logic Corporation Method and device for automatic simulation verification
US6434620B1 (en) 1998-08-27 2002-08-13 Alacritech, Inc. TCP/IP offload network interface device
US6560680B2 (en) * 1998-01-21 2003-05-06 Micron Technology, Inc. System controller with Integrated low latency memory using non-cacheable memory physically distinct from main memory
US6397299B1 (en) * 1998-01-21 2002-05-28 Micron Technology, Inc. Reduced latency memory configuration method using non-cacheable memory physically distinct from main memory
US6170078B1 (en) 1998-02-27 2001-01-02 International Business Machines Corporation Fault simulation using dynamically alterable behavioral models
US6223238B1 (en) * 1998-03-31 2001-04-24 Micron Electronics, Inc. Method of peer-to-peer mastering over a computer bus
US6188975B1 (en) * 1998-03-31 2001-02-13 Synopsys, Inc. Programmatic use of software debugging to redirect hardware related operations to a hardware simulator
US6073198A (en) * 1998-03-31 2000-06-06 Micron Electronics, Inc. System for peer-to-peer mastering over a computer bus
US6385651B2 (en) * 1998-05-05 2002-05-07 Liberate Technologies Internet service provider preliminary user registration mechanism provided by centralized authority
US6971109B1 (en) 1998-07-24 2005-11-29 Micron Technology, Inc. Integrated application management system
US6571204B1 (en) 1998-08-04 2003-05-27 Micron Technology, Inc. Bus modeling language generator
US6284655B1 (en) 1998-09-03 2001-09-04 Micron Technology, Inc. Method for producing low carbon/oxygen conductive layers
US6425056B2 (en) * 1998-10-26 2002-07-23 Micron Technology, Inc. Method for controlling a direct mapped or two way set associative cache memory in a computer system
US6470436B1 (en) 1998-12-01 2002-10-22 Fast-Chip, Inc. Eliminating memory fragmentation and garbage collection from the process of managing dynamically allocated memory
JP2000200840A (ja) 1999-01-06 2000-07-18 Mitsubishi Electric Corp 半導体装置およびその製造方法
US6321289B1 (en) 1999-04-08 2001-11-20 Micron Technology, Inc. Apparatus for automatically notifying operating system level applications of the occurrence of system management events
US6336176B1 (en) 1999-04-08 2002-01-01 Micron Technology, Inc. Memory configuration data protection
US6490671B1 (en) 1999-05-28 2002-12-03 Oracle Corporation System for efficiently maintaining translation lockaside buffer consistency in a multi-threaded, multi-processor virtual memory system
US6401151B1 (en) 1999-06-07 2002-06-04 Micron Technology, Inc. Method for configuring bus architecture through software control
FR2795196B1 (fr) 1999-06-21 2001-08-10 Bull Sa Processus de liberation de pages physiques pour mecanisme d'adressage virtuel
US6529999B1 (en) 1999-10-27 2003-03-04 Advanced Micro Devices, Inc. Computer system implementing system and method for ordering write operations and maintaining memory coherency
US6625715B1 (en) 1999-12-30 2003-09-23 Intel Corporation System and method for translation buffer accommodating multiple page sizes
US6654832B1 (en) * 2000-01-18 2003-11-25 Micron Technology, Inc. Method of initializing a processor and computer system
US6591318B1 (en) * 2000-01-24 2003-07-08 Micron Technology, Inc. Computer system having reduced number of bus bridge terminals
US6912672B2 (en) 2000-04-08 2005-06-28 Samsung Electronics Co., Ltd. Method of verifying defect management area information of disc and test apparatus for performing the same
US7000224B1 (en) * 2000-04-13 2006-02-14 Empirix Inc. Test code generator, engine and analyzer for testing middleware applications
FR2809901B1 (fr) * 2000-06-05 2002-11-22 Sekoya Procede de transmission d'un message entre deux ordinateurs relies et systemes de messagerie correspondant
DE60119320T2 (de) * 2000-06-06 2007-05-16 Broadcom Corp., Irvine Verzögerungsreduzierungsverfahren für telefonsysteme mit mehrpaketgeneratoren
US6711043B2 (en) * 2000-08-14 2004-03-23 Matrix Semiconductor, Inc. Three-dimensional memory cache system
US6970816B1 (en) 2000-08-14 2005-11-29 International Business Machines Corporation Method and system for efficiently generating parameterized bus transactions
US6725326B1 (en) 2000-08-15 2004-04-20 Cisco Technology, Inc. Techniques for efficient memory management for longest prefix match problems
US6812726B1 (en) 2002-11-27 2004-11-02 Inapac Technology, Inc. Entering test mode and accessing of a packaged semiconductor device
US6934785B2 (en) 2000-12-22 2005-08-23 Micron Technology, Inc. High speed interface with looped bus
JP2004520671A (ja) 2001-01-30 2004-07-08 メンコール インク. 複合コンテントアドレッサブルメモリ
GB2373595B (en) 2001-03-15 2005-09-07 Italtel Spa A system of distributed microprocessor interfaces toward macro-cell based designs implemented as ASIC or FPGA bread boarding and relative common bus protocol
JP2002278924A (ja) * 2001-03-19 2002-09-27 Oki Electric Ind Co Ltd データの転送制御システム,転送制御方法およびそのプログラム
US6516383B1 (en) 2001-05-30 2003-02-04 Cisco Technology, Inc. Techniques for efficient location of free entries for TCAM inserts
US6597595B1 (en) 2001-08-03 2003-07-22 Netlogic Microsystems, Inc. Content addressable memory with error detection signaling
TW539947B (en) 2001-08-23 2003-07-01 Via Tech Inc Testing method for determining the source of interrupt
US6687786B1 (en) 2001-09-28 2004-02-03 Cisco Technology, Inc. Automated free entry management for content-addressable memory using virtual page pre-fetch
US7017089B1 (en) 2001-11-01 2006-03-21 Netlogic Microsystems, Inc Method and apparatus for testing a content addressable memory device
US6678875B2 (en) * 2002-01-25 2004-01-13 Logicvision, Inc. Self-contained embedded test design environment and environment setup utility
US7050921B2 (en) 2002-04-23 2006-05-23 Agilent Technologies, Inc. Electronic test program with run selection
US20040044508A1 (en) 2002-08-29 2004-03-04 Hoffman Robert R. Method for generating commands for testing hardware device models
US7660998B2 (en) 2002-12-02 2010-02-09 Silverbrook Research Pty Ltd Relatively unique ID in integrated circuit
US7152123B2 (en) * 2002-12-23 2006-12-19 Micron Technology, Inc. Distributed configuration storage
US6819579B1 (en) 2003-04-22 2004-11-16 Faraday Technology Corp. Integrated content addressable memory architecture
US7404058B2 (en) * 2003-05-31 2008-07-22 Sun Microsystems, Inc. Method and apparatus for avoiding collisions during packet enqueue and dequeue
US7019998B2 (en) 2003-09-09 2006-03-28 Silicon Storage Technology, Inc. Unified multilevel cell memory
US7779212B2 (en) 2003-10-17 2010-08-17 Micron Technology, Inc. Method and apparatus for sending data from multiple sources over a communications bus
US7257799B2 (en) 2003-11-14 2007-08-14 Lsi Corporation Flexible design for memory use in integrated circuits
US6944039B1 (en) 2003-12-12 2005-09-13 Netlogic Microsystems, Inc. Content addressable memory with mode-selectable match detect timing
US7343477B1 (en) * 2003-12-29 2008-03-11 Sun Microsystems, Inc. Efficient read after write bypass
US20070083491A1 (en) 2004-05-27 2007-04-12 Silverbrook Research Pty Ltd Storage of key in non-volatile memory
US20060294312A1 (en) 2004-05-27 2006-12-28 Silverbrook Research Pty Ltd Generation sequences
US7328956B2 (en) 2004-05-27 2008-02-12 Silverbrook Research Pty Ltd Printer comprising a printhead and at least two printer controllers connected to a common input of the printhead
US7275805B2 (en) 2004-05-27 2007-10-02 Silverbrook Research Pty Ltd Printhead comprising different printhead modules
US7832842B2 (en) 2004-05-27 2010-11-16 Silverbrook Research Pty Ltd Printer controller for supplying data to a printhead module having interleaved shift registers
US7778812B2 (en) 2005-01-07 2010-08-17 Micron Technology, Inc. Selecting data to verify in hardware device model simulation test generation
US7343447B2 (en) 2005-11-08 2008-03-11 International Business Machines Corporation Method and system for synchronizing direct access storage volumes

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9928129B2 (en) 2014-12-08 2018-03-27 SK Hynix Inc. Operation apparatus module

Also Published As

Publication number Publication date
CN1890650A (zh) 2007-01-03
US20100299440A1 (en) 2010-11-25
US20120110255A1 (en) 2012-05-03
US8095748B2 (en) 2012-01-10
ATE428984T1 (de) 2009-05-15
US8806152B2 (en) 2014-08-12
JP4466653B2 (ja) 2010-05-26
WO2005038660A3 (en) 2005-09-01
US20130097395A1 (en) 2013-04-18
CN100487685C (zh) 2009-05-13
US20050086417A1 (en) 2005-04-21
US7779212B2 (en) 2010-08-17
WO2005038660A2 (en) 2005-04-28
US8327089B2 (en) 2012-12-04
US9652412B2 (en) 2017-05-16
US20140351502A1 (en) 2014-11-27
JP2007534044A (ja) 2007-11-22
KR100825238B1 (ko) 2008-04-25
DE602004020647D1 (de) 2009-05-28
EP1678621A2 (en) 2006-07-12
EP1678621B1 (en) 2009-04-15

Similar Documents

Publication Publication Date Title
KR100825238B1 (ko) 다중 소스로부터의 데이터를 통신 버스를 통해 송신하는방법 및 장치
US5237670A (en) Method and apparatus for data transfer between source and destination modules
US6704821B2 (en) Arbitration method and circuit architecture therefore
EP1027657B1 (en) A fully-pipelined fixed-latency communications system with a real-time dynamic bandwidth allocation
EP1738267B1 (en) System and method for organizing data transfers with memory hub memory modules
CN100524266C (zh) 在总线上以包的形式传输数据传输请求的方法及设备
EP0525860A2 (en) High performance I/O processor
US8032676B2 (en) Methods and apparatuses to manage bandwidth mismatches between a sending device and a receiving device
KR100814904B1 (ko) 칩 내부 회로 간의 데이터 전송을 위한 통신 시스템
CN102984123A (zh) 使用多个消息组的计算机系统中的代理之间的通信消息请求事务类型
EP1370939A1 (en) Communications system and method with non-blocking shared interface
JPH09223089A (ja) 複数バス・ターゲットへのパケット・データの分割を可能にする方法および装置
US20050125590A1 (en) PCI express switch
US7990983B2 (en) Modular interconnect structure
EP0731583A1 (en) Method and system for routing messages in a multi-node data communication network
JP2012521588A (ja) 回路構成におけるデータ交換を制御するための回路構成、および方法
CN109522194A (zh) 针对axi协议从设备接口的自动化压力测试系统及方法
RU175049U9 (ru) УСТРОЙСТВО КОММУНИКАЦИОННЫХ ИНТЕРФЕЙСОВ SpaceWire
US20020042854A1 (en) Bus interconnect system
US20040193836A1 (en) Electronic systems comprising a system bus
US7177997B2 (en) Communication bus system
JPH09179815A (ja) バス制御装置

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
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130404

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20140401

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20160318

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20170322

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20180329

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20190422

Year of fee payment: 12