KR20160018987A - 인터페이스 회로 및 그것의 패킷 전송 방법 - Google Patents

인터페이스 회로 및 그것의 패킷 전송 방법 Download PDF

Info

Publication number
KR20160018987A
KR20160018987A KR1020140102427A KR20140102427A KR20160018987A KR 20160018987 A KR20160018987 A KR 20160018987A KR 1020140102427 A KR1020140102427 A KR 1020140102427A KR 20140102427 A KR20140102427 A KR 20140102427A KR 20160018987 A KR20160018987 A KR 20160018987A
Authority
KR
South Korea
Prior art keywords
packet
data
header
payload
interface circuit
Prior art date
Application number
KR1020140102427A
Other languages
English (en)
Other versions
KR102173089B1 (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 삼성전자주식회사
Priority to KR1020140102427A priority Critical patent/KR102173089B1/ko
Priority to US14/697,815 priority patent/US10185687B2/en
Publication of KR20160018987A publication Critical patent/KR20160018987A/ko
Priority to US16/216,071 priority patent/US10719472B2/en
Application granted granted Critical
Publication of KR102173089B1 publication Critical patent/KR102173089B1/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/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • 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
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/22Employing cache memory using specific memory technology
    • G06F2212/222Non-volatile memory

Abstract

인터페이스 회로의 패킷 전송 방법은, 복수의 데이터를 페이로드 형태로 패키징하는 단계, 상기 복수의 데이터의 패키징 여부에 대한 정보를 헤더, 상기 페이로드 또는 상기 복수의 데이터의 전송 오류 확인 코드를 포함하는 CRC 영역 중 어느 하나에 저장하는 단계, 상기 헤더, 상기 페이로드, 및 상기 CRC 영역을 결합하여 전송 계층 패킷을 생성하는 단계 및 상기 전송 계층 패킷을 포함하는 패킷을 출력하는 단계를 포함한다.

Description

인터페이스 회로 및 그것의 패킷 전송 방법{INTERFACE CIRCUIT AND PACKET TRANSMISSION METHOD THEREOF}
본 발명은 인터페이스 회로(Interface Circuit) 기술에 관한 것으로, 좀더 구체적으로는 통신 규약에 따른 멀티 데이터를 포함하는 패킷을 생성하고, 전송하는 인터페이스 회로에 관한 것이다.
인터페이스 회로는 데이터를 컴퓨터 시스템 내부, 또는 서로 다른 컴퓨터 시스템 사이에서 다양한 방법을 전송될 수 있다. 몇몇 시스템들은, 인터페이스 회로를 통해 데이터를 패킷 형태로 묶어서 전송할 수 있다. 인터페이스 회로는 통신 규약에 따라 데이터를 송수신 할 수 있다. 인터페이스 회로는 FC(Fiber Channel), USB(Universal Serial Bus)3.0, SAS(Serial Attached SCSI), PCIe(Peripheral Component Interface Express, 이하: PCIe) 등의 규약에 따라 작동될 수 있다.
그 중, PCIe규약에 기초를 둔 인터페이스 회로는 4,064 바이트(byte) 크기의 페이로드를 포함할 수 있다. 페이로드(Payload)는 유효한 데이터를 포함할 수 있다 또한, PCIe 인터페이스 회로는 페이로드에 포함되는 데이터에 대한 정보를 담고 있는 헤더(Header)를 갖는다.
PCIe 인터페이스 회로는 호스트 프로세서와 불휘발성 메모리 장치 사이의 데이터 교환을 가능하게 한다. 이 때, 호스트 프로세서의 캐시 라인(Cache Line) 데이터는 64 바이트 또는 128 바이트 단위의 작은 크기이다. 복수의 캐시 라인에 포함된 데이터를 복수의 패킷에 각각 패키징하여PCIe 인터페이스 회로를 통해 전송할 수 있다. 하지만, 작은 크기의 데이터를 전송하기 위해 사용되는 패킷이 많아지면, 복수의 패킷 각각에 포함된 헤더로 인한 오버헤드가 커지게 된다. 따라서, 패킷 전송 시간이 증가하게 된다.
본 발명은 상술한 기술적 과제를 해결하기 위한 것으로, 본 발명의 목적은 하나의 패킷에 다중 데이터를 포함하고, 향상된 효율을 갖는 다중 결합한 패킷을 포함하는 인터페이스 회로 및 그것의 패킷 전송 방법을 제공하는 데에 있다.
본 발명의 실시 예에 따른 인터페이스 회로의 패킷 전송 방법은, 복수의 데이터를 페이로드 형태로 패키징하는 단계, 상기 복수의 데이터의 패키징 여부에 대한 정보를 헤더, 상기 페이로드 또는 상기 복수의 데이터의 전송 오류 확인 코드를 포함하는 CRC 영역 중 어느 하나에 저장하는 단계, 상기 헤더, 상기 페이로드, 및 상기 CRC 영역을 결합하여 전송 계층 패킷을 생성하는 단계 및 상기 전송 계층 패킷을 포함하는 패킷을 출력하는 단계를 포함한다.
실시 예로서, 상기 복수의 데이터 각각에 대한 어드레스들을 지시하는 메타 데이터는 상기 헤더, 상기 페이로드 또는 상기 CRC 영역 중 적어도 하나에 저장되는 단계를 더 포함한다.
실시 예로서, 상기 복수의 데이터의 패키징 여부에 대한 정보는 상기 헤더의 예비 비트 영역에 저장된다.
본 발명의 실시 예에 따른 인터페이스 회로의 패킷 전송 방법은, 패킷을 수신하는 단계, 상기 수신한 패킷의 전송 계층 패킷에 복수의 데이터 패키징 여부를 확인하는 단계 및 상기 확인 결과에 따라, 상기 전송 계층 패킷에 페이로드 형태로 패키징된 상기 복수의 데이터를 디코딩하여 출력하는 단계를 포함한다.
실시 예로서, 상기 복수의 데이터 패키징 여부는 상기 전송 계층 패킷의 헤더 또는 상기 복수의 데이터의 전송 오류 확인 코드를 포함하는 CRC 영역 중 적어도 하나에 저장된 정보에 의해 확인된다.
실시 예로서, 상기 복수의 데이터 각각에 대한 어드레스들을 지시하는 메타 데이터를 디코딩하는 단계를 더 포함한다.
본 발명의 실시 예에서 PCIe 규약에 따라 제1 및 제2 패킷을 송수신하기 위한 인터페이스 회로는, 상기 제 1 패킷을 출력하는 전송부 및 상기 제2 패킷을 수신하는 수신부를 포함하되, 상기 전송부는 복수의 데이터를 상기 제1 패킷에 페이로드 형태로 패키징하기 위한 페이로드 발생기, 상기 복수의 데이터의 패키징 여부에 대한 비트를 포함하는 헤더를 생성하기 위한 헤더 발생기, 상기 페이로드, 상기 헤더 및 상기 복수의 데이터의 전송 오류 확인 코드를 포함하는 제1 CRC 영역으로 구성된 전송 계층 패킷을 포함하는 상기 제1 패킷을 생성하는 결합기 및 상기 제1 패킷을 출력하는 전송기를 포함한다.
실시 예로서, 상기 헤더 발생기는 상기 복수의 데이터에 대한 어드레스들을 지시하는 메타 데이터를 포함하는 상기 헤더를 생성한다.
실시 예로서, 상기 결합기는 상기 전송 계층 패킷 양단에 시퀀스 번호 및 제2 CRC 영역을 포함하는 데이터 링크 계층 패킷을 생성한다.
실시 예로서, 상기 수신부는 상기 제2 패킷을 수신하는 수신기 및 상기 제 2 패킷의 복수의 데이터 패키징 여부를 판별하고, 상기 제2 패킷의 페이로드를 디코딩하여 복수의 데이터를 출력하는 디코더를 더 포함한다.
본 발명의 실시 예에 따른 인터페이스 회로는 패킷의 전송 계층 패킷(Transaction Layer Packet)에 복수의 데이터를 패키징하여 한 번에 많은 데이터를 전송할 수 있다. 따라서, 본 발명에 의하면, 향상된 효율을 갖는 인터페이스 회로를 제공할 수 있다.
도 1은 본 발명의 실시 예에 따른 컴퓨팅 장치를 보여주는 블록도이다.
도 2는 본 발명의 실시 예에 따른 인터페이스 회로가 가질 수 있는 구성을 나타내는 블록도이다.
도 3 및 도 4는 패킷의 구조를 보여주는 블록도이다.
도 5는 본 발명의 제1 실시 예에 따른 패킷의 전송 계층 패킷을 보여주는 블록도이다.
도 6은 본 발명의 제2 실시 예에 따른 패킷의 전송 계층 패킷을 보여주는 블록도이다.
도 7은 본 발명의 제1 실시 예에 따른 인터페이스 회로의 패킷 전송 방법을 보여주는 순서도이다.
도 8은 본 발명의 제1 실시 예에 따른 인터페이스 회로의 패킷 수신 방법을 보여주는 순서도이다.
도 9는 본 발명의 제3 실시 예에 따른 패킷의 전송 계층 패킷을 보여주는 블록도이다.
도 10은 본 발명의 제2 실시 예에 따른 인터페이스 회로의 패킷 전송 방법을 보여주는 순서도이다.
도 11은 본 발명의 제2 실시 예에 따른 인터페이스 회로의 패킷 수신 방법을 보여주는 순서도이다.
도 12는 본 발명의 제4 실시 예에 따른 패킷의 전송 계층 패킷을 보여주는 블록도이다.
도 13은 본 발명의 제3 실시 예에 따른 인터페이스 회로의 패킷 전송 방법을 보여주는 순서도이다.
도 14는 본 발명의 제3 실시 예에 따른 인터페이스 회로의 패킷 수신 방법을 보여주는 순서도이다.
도 15는 본 발명의 실시 예에 따른 인터페이스 회로를 포함하는 저장 장치가 가질 수 있는 구성을 나타낸 블록도이다.
도 16은 본 발명의 다른 실시 예가 적용된 저장 장치를 포함하는 컴퓨팅 장치가 가질 수 있는 구성을 나타낸 블록도이다.
도 17은 본 발명의 또 다른 실시 예에 따른 컴퓨팅 장치를 보여주는 블록도이다.
전술한 특성 및 이하 상세한 설명은 모두 본 발명의 설명 및 이해를 돕기 위한 예시적인 사항이다. 즉, 본 발명은 이와 같은 실시 예에 한정되지 않고 다른 형태로 구체화될 수 있다. 다음 실시 형태들은 단지 본 발명을 완전히 개시하기 위한 예시이며, 본 발명이 속하는 기술 분야의 통상의 기술자들에게 본 발명을 전달하기 위한 설명이다. 따라서, 본 발명의 구성 요소들을 구현하기 위한 방법이 여럿 있는 경우에는, 이들 방법 중 특정한 것 또는 이와 동일성 있는 것 가운데 어떠한 것으로든 본 발명의 구현이 가능함을 분명히 할 필요가 있다.
본 명세서에서 어떤 구성이 특정 요소들을 포함한다는 언급이 있는 경우, 또는 어떤 과정이 특정 단계들을 포함한다는 언급이 있는 경우는, 그 외 다른 요소 또는 다른 단계들이 더 포함될 수 있음을 의미한다. 즉, 본 명세서에서 사용되는 용어들은 특정 실시 형태를 설명하기 위한 것일 뿐이고, 본 발명의 개념을 한정하기 위한 것이 아니다. 나아가, 발명의 이해를 돕기 위해 설명한 예시들은 그것의 상보적인 실시 예도 포함한다.
본 명세서에서 사용되는 용어들은 본 발명이 속하는 기술 분야의 통상의 기술자들이 일반적으로 이해하는 의미를 갖는다. 보편적으로 사용되는 용어들은 본 명세서의 맥락에 따라 일관적인 의미로 해석되어야 한다. 또한, 본 명세서에서 사용되는 용어들은, 그 의미가 명확히 정의된 경우가 아니라면, 지나치게 이상적이거나 형식적인 의미로 해석되지 않아야 한다. 이하 첨부된 도면을 통하여 본 발명의 실시 예가 설명된다.
도 1은 본 발명의 실시 예에 따른 컴퓨팅 장치를 보여주는 블록도이다. 도 1을 참조하면, 컴퓨팅 장치(1000)는 호스트 프로세서(1100), 입출력 장치(1200), 저장 장치(1300), 및 적어도 하나의 호스트 메모리(1400)를 포함할 수 있다.
호스트 프로세서(1100)는 컴퓨팅 장치(1000)의 전반적인 동작을 제어한다. 호스트 프로세서(1100)는 제1 내지 제n 캐시 라인들(CL1~CLn) 컨트롤러(1110) 및 제1 인터페이스 회로(1120)를 포함할 수 있다. 복수의 캐시 라인들(CL1~CLn)은 저장 장치(1300)로 전송할 데이터를 임시로 저장할 수 있다. 또한 복수의 캐시 라인들(CL1~CLn)은 저장 장치(1300)로부터 수신된 데이터를 임시로 저장할 수 있다. 복수의 캐시 라인들(CL1~CLn) 각각은 64바이트(64Byte)의 크기를 갖는 데이터를 저장할 수 있다. 하지만, 복수의 캐시 라인들(CL1~CLn)이 저장할 수 있는 데이터의 크기는 64바이트로 한정되지는 않는다.
컨트롤러(1110)는 호스트 메모리(1400)의 전반적인 동작을 제어한다. 컨트롤러(1110)는 복수의 캐시 라인들(CL1~CLn)과 제1 인터페이스 회로(1120)의 데이터 전송을 제어할 수 있다. 컨트롤러(1110)는 복수의 캐시 라인들(CL1~CLn)에서 제1 인터페이스 회로(1120)로 출력되는 데이터를 제어한다. 또한 컨트롤러(1110)는 복수의 캐시 라인들(CL1~CLn)에 저장되는 데이터의 입력을 제어한다.
제1 인터페이스 회로(1120)는 통신 규약에 따라 데이터를 패킷 형태로 패키징하여 송수신할 수 있다.. 제1 인터페이스 회로(1120)는 FC(Fiber Channel), USB(Universal Serial Bus)3.0, SAS(Serial Attached SCSI), PCIe(Peripheral Component Interface Express) 등의 규약을 따를 수 있다. 본 발명의 실시 예에서는 제1 인터페이스 회로(1120)가 PCIe 규약에 따라 작동한다고 가정한다.
데이터의 프로그램 요청이 발생하면, 제1 인터페이스 회로(1120)는 데이터를 순차적으로 패키징하여 복수의 패킷 형태로 전송할 수 있다. 예시적으로, 제1 인터페이스 회로(1120)는 복수의 데이터를 하나의 패킷에 패키징하여 전송할 수 있다.
데이터의 읽기 요청이 발생하면, 제1 인터페이스 회로(1120)는 저장 장치(1300)의 데이터를 입출력 장치(1200)로부터 패킷 형태로 수신한다. 제1 인터페이스 회로(1120)는 각각의 데이터를 포함한 복수의 패킷들을 수신할 수 있다. 또한, 제1 인터페이스 회로(1120)는 복수의 데이터를 패키징한 하나의 패킷을 수신할 수 있다. 제1 인터페이스 회로(1120)는 수신한 복수의 패킷들 또는 하나의 패킷을 디코딩할 수 있다. 디코딩을 통해 구한 데이터는 컨트롤러의 제어에 따라 복수의 캐시 라인들(CL1~CLn) 각각에 저장될 수 있다.
입출력 회로(1200)는 호스트 프로세서(1100) 와 저장 장치(1300) 사이에서 통신을 수행할 수 있다. 입출력 회로(1200) 호스트 프로세서(1100) 와 저장 장치(1300) 사이에서 패킷을 전송 및 디코딩할 수 있다. 입출력 회로(1200)는 패킷을 전송 및 디코딩하기 위한 제2 인터페이스 회로(1210)를 포함한다.
제2 인터페이스 회로(1210)는 통신 규약에 따라 데이터를 패킷에 패키징하거나 디코딩할 수 있다. 제2 인터페이스 회로(1210)는 FC(Fiber Channel), USB(Universal Serial Bus)3.0, SAS(Serial Attached SCSI), PCIe(Peripheral Component Interface Express) 등의 규약을 따를 수 있다. 본 발명의 실시 예에 따라, 제2 인터페이스 회로(1210)는 PCIe 규약을 따른다고 가정한다.
데이터의 프로그램 요청이 발생하면, 제2 인터페이스 회로(1210)는 제1 인터페이스 회로(1120)로부터 복수의 패킷들 또는 하나의 패킷을 수신할 수 있다. 제2 인터페이스 회로(1210)는 수신한 복수의 패킷들 또는 하나의 패킷을 디코딩하여 커맨드(CMD), 어드레스(ADDR) 및 데이터(DATA)를 저장 장치(1300)로 전송한다.
데이터의 읽기 요청이 발생하면, 제2 인터페이스 회로(1210)는 저장 장치(1300)로부터 데이터를 수신할 수 있다. 제2 인터페이스 회로(1210)는 수신한 복수의 데이터 각각을 패킷에 패키징하여 호스트 프로세서(1100)로 전송할 수 있다. 또한, 제2 인터페이스 회로(1210)는 수신한 복수의 데이터를 하나의 패킷에 패키징하여 호스트 프로세서(1100)로 전송할 수 있다.
저장 장치(1300)는 메모리 컨트롤러(1310) 및 불휘발성 메모리 장치(1320)를 포함할 수 있다. 메모리 컨트롤러(1310)는 적어도 하나의 불휘발성 메모리 장치(1320)를 전반적으로 제어한다. 적어도 하나의 불휘발성 메모리 장치(1320)는 플래시 메모리(Flash Memory), PRAM(phase-change RAM), MRAM(Magnetic RAM), RRAM(Resistive RAM), FRAM(Ferroelectric RAM), 및 VNAND(Vertical NAND) 등과 같은 불휘발성 메모리 장치 중 적어도 하나일 수 있다.
호스트 메모리(1400)는 호스트 프로세서(1100)에 연결된다. 호스트 메모리(1400)는 호스트 프로세서(1100)의 제어에 따라 필요한 데이터를 저장할 수 있다. 호스트 메모리(1400)는 DRAM(Dynamic RAM) 또는 PRAM(Phase-change RAM)과 같은 불휘발성 메모리 장치로 구현될 수 있다.
제1 및 제2 인터페이스 회로들(1120, 1210)은 복수의 데이터를 복수의 패킷 각각에 패키징하여 전송 및 수신할 수 있다. 하지만, 데이터의 크기가 작은 경우, 각각의 패킷에 포함된 헤더들에 의해 오버헤드가 증가하는 문제점이 발생한다. 예를 들어, 64바이트의 용량을 갖는 복수의 데이터 각각을 복수의 패킷에 패키징하여 전송할 경우, 데이터만을 전송할 때와 비교하여 전송시간이 약 35% 증가할 수 있다. 이와 같은 오버 헤드를 감소시키기 위해서, 본 발명에서는 복수의 데이터를 하나의 패킷에 패키징하여 전송하는 방법을 구현하고자 한다.
도 2는 본 발명의 실시 예에 따른 인터페이스 회로가 가질 수 있는 구성을 나타내는 블록도이다. 도 2는 제1 및 제2 인터페이스 회로(1120, 1210)의 구성을 예시적으로 설명한다.
제1 인터페이스 회로(1120)는 제1 전송부(1121) 및 제1 수신부(1122)를 포함할 수 있다. 제1 전송부(1121)는 제1 페이로드 발생기(1121_1), 제2 헤더 발생기(1121_2), 제1 결합기(1121_3), 및 제1 전송기(1121_4)를 포함할 수 있다.
제1 페이로드 발생기(1121_1)는 복수의 데이터(DATA) 및 어드레스들(ADDR)을 수신할 수 있다. 제1 페이로드 발생기(1121_1)는 복수의 데이터(DATA) 및 어드레스들(ADDR)을 포함하는 메타 데이터를 결합하여 하나의 페이로드(Payload)를 생성한다. 복수의 어드레스들(ADDR)은 복수의 데이터(DATA) 각각이 입력되어야 하는 주소 정보를 포함한다. 페이로드는 패킷에서 실제 데이터 및 메타 데이터를 포함하는 곳을 의미한다. 제1 페이로드 발생기(1121_1)는 복수의 데이터(DATA) 및 메타 데이터의 포함을 지시하는 정보를 페이로드에 저장할 수 있다.
제1 헤더 발생기(1121_2)는 페이로드에 포함된 복수의 데이터의 정보를 포함하는 헤더(header)를 생성한다. 구체적으로 본 발명의 헤더는, 하나의 패킷에 복수의 데이터(DATA) 및 어드레스들(ADDR)을 포함하는 메타 데이터가 포함되었음을 지시하는 정보를 갖는다. 또한, 제1 헤더 발생기(1121_2)는 헤더에 읽기 동작을 수행해야 하는지 또는 프로그램 동작을 수행해야 하는지 나타내는 커맨드(CMD)가 저장될 수 있다.
제1 결합기(1121_3)는 제1 페이로드 발생기(1121_1) 및 제1 헤더 발생기(1121_1)를 통해 생성된 헤더 및 페이로드를 결합하여 하나의 패킷을 생성할 수 있다. 헤더 및 페이로드는 패킷의 전송 계층 패킷을 구성한다. 제1 결합기(1121_3)는 전송 계층 패킷에 추가적인 정보를 결합한다. 이에 따라, 제1 결합기(1121_3)는 PCIe 규약에 의해 정의되는 물리 계층(Physical Layer)을 구성하는 패킷을 생성할 수 있다. 제1 결합기(1121_3)는 물리 계층 패킷 형태의 하나의 패킷을 제1 전송기(1121_4)로 출력한다.
제1 전송기(1121_4)는 완성된 패킷을 출력할 수 있다. 제1 전송기(1121_4)는 완성된 패킷을 제2 인터페이스 회로(1210)로 출력할 수 있다.
제1 수신부(1122)는 제1 수신기(1121_1), 및 제1 디코더(1122_2)를 포함할 수 있다. 제1 수신기(1122_1)는 제2 인터페이스 회로(1210)로부터 패킷을 수신할 수 있다. 제1 수신기(1122_1)는 수신한 패킷을 제1 디코더(1122_2)로 출력한다.
제1 디코더(1122_2)는 수신한 패킷을 디코딩할 수 있다. 제1 디코더(1122_2)는 디코딩한 패킷의 헤더를 해석할 수 있다. 제1 디코더(1122_2)는 페이로드에 복수의 데이터가 포함되어 있는지 또는, 단일 데이터가 포함되어 있는지 판별할 수 있다. 제1 디코더(1121_2)는 페이로드를 분석하여 복수의 데이터(DATA)를 구할 수 있다. 제1 디코더(1121_1)는 페이로드에 포함된 복수의 데이터를 호스트 프로세서(1100)로 전송한다.
제2 인터페이스 회로(1210)는 제2 수신부(1211) 및 제2 전송부(1212)를 포함할 수 있다. 제2 인터페이스 회로(1210)의 구성 및 동작 방법은 제1 인터페이스 회로(1120)와 유사하다.
제2 수신부(1211)는 제2 수신기(1211_1) 및 제2 디코더(1211_2)를 포함할 수 있다. 제2 수신기(1211_1)는 제1 전송기(1121_4)로부터 패킷을 수신할 수 있다. 제2 수신기(1211_1)는 수신한 패킷을 제2 디코더(1211_2)로 출력한다.
제2 디코더(1211_2)는 헤더를 해석하여 패킷에 복수의 데이터(DATA) 및 메타 데이터가 패키징 되었는지 판별한다. 제2 디코더(1211_2)는 페이로드의 메타 데이터에 포함된 복수의 어드레스들(ADDR)을 추가로 해석한다 제2 디코더(1211_2)는 복수의 어드레스들(ADDR)의 지시에 대응하도록 복수의 데이터(DATA)를 저장 장치(1300)로 출력한다.
제2 전송부(1212)는 제2 페이로드 발생기(1212_1), 제2 헤더 발생기(1212_2), 제2 결합기(1212_3) 및 제2 전송기(1212_4)를 포함할 수 있다.
제2 페이로드 발생기(1212_1)는 저장 장치(1300)로부터 복수의 데이터(DATA)를 수신할 수 있다. 제2 페이로드 발생기(1212_1)는 복수의 데이터(DATA)를 하나의 페이로드에 패키징할 수 있다. 또한, 제2 페이로드 발생기(1212_1)는 복수의 데이터(DATA)의 포함을 지시하는 정보를 페이로드에 저장할 수 있다.
제2 헤더 발생기(1212_2)는 페이로드에 포함된 복수의 데이터의 정보를 포함하는 헤더를 생성한다. 구체적으로 본 발명의 헤더는, 하나의 패킷에 복수의 데이터(DATA)가 포함되었음을 지시하는 정보를 갖는다.
제2 결합기(1212_3)는 제2 페이로드 발생기(1212_1) 및 제2 헤더 발생기(1212_1)를 통해 생성된 헤더 및 페이로드를 결합하여 하나의 패킷을 생성할 수 있다. 헤더 및 페이로드는 패킷의 전송 계층 패킷을 구성한다. 제2 결합기(1212_3)는 PCIe 규약에 의해 정의되는 물리 계층(Physical Layer)을 구성하는 패킷을 생성할 수 있다. 제2 결합기(1212_3)는 물리 계층 패킷 형태의 하나의 패킷을 제2 전송기(1212_4)로 출력한다.
제2 전송기(1212_4)는 제2 결합기(1212_3)로부터 하나의 패킷을 수신한다. 제2 전송기(1212_4)는 수산한 하나의 패킷을 제1 인터페이스 회로(1210)로 출력할 수 있다.
본 발명의 제1 및 제2 인터페이스 회로들(1120, 1210)은 복수의 데이터(DATA)를 하나의 패킷에 패키징하여 송수신할 수 있다. 따라서, 복수의 데이터(DATA)를 복수의 패킷에 각각 패키징하여 송수신할 때보다 전송 효율이 증가하는 효과가 있다.
도 3 및 도 4는 패킷의 구조를 보여주는 블록도이다. 도 3은 패킷의 구성을 보여준다. 패킷은 전송 계층 패킷(Transaction Layer Packet, TLP), 데이터 링크 계층 패킷(Data Link Layer Packet, DLLP) 및 물리적 계층 패킷(Physical Layer Packet, PLP)으로 구성되어 있다.
전송 계층 패킷(TLP)은 헤더(Header), 데이터(Data) 및 추가적인 ECRC(End-to-end Cyclic redundancy check)영역을 포함할 수 있다. 데이터(Data)가 포함되는 부분을 페이로드(Payload)라고 한다. ECRC 영역은 전송 계층 패킷(TLP)의 데이터 전송에서의 오류 검출을 위한 순환 코드를 포함할 수 있다.
도 1및 도 2를 참조하면, 본 발명의 실시 예에 따른 전송 계층 패킷(TLP)은 페이로드에 복수의 데이터(DATA) 및 어드레스들(ADDR)을 포함할 수 있다. 또한, 헤더(Header)는 페이로드에 복수의 데이터(DATA) 및 어드레스들(ADDR)이 포함되었음을 지시하는 정보가 포함될 수 있다. 본 발명의 실시 예에 따른 전송 계층 패킷(TLP)의 구성은 아래 도면들을 참조하여 더욱 자세하게 설명된다.
데이터 링크 계층 패킷(DLLP)은 에러 감지를 관리한다. 송신 시, 데이터 링크 계층 패킷(DLLP)은 전송 계층 패킷(TLP)양단에 시퀀스 번호(Sequence Number) 및 LCRC(Link Cyclic Redundancy Check)영역을 덧붙인다. 데이터 링크 계층 패킷(DLLP)은 송달 응답 등 링크의 쌍방으로 정보를 교환하는 짧은 패킷이다.
물리적 계층 패킷(PLP)은 데이터 링크 계층 패킷(DLLP) 양단에 프레이밍(Framing) 비트를 덧붙인 형태이다. 프레이밍 비트는 전송 계층 패킷(TLP)의 개시와 종료를 검출하기 위한 제어 캐릭터이다. 물리적 계층 패킷(PLP)는 제1 및 제2 인터페이스 회로들(1120, 1210)을 통해 송수신 되는 패킷의 형태이다.
도 2 및 도 3을 참조하면, 제1 및 제2 전송부들(1121, 1211)은 전송 계층 패킷(TLP), 데이터 링크 계층 패킷(DLLP), 및 물리적 계층 패킷(PLP)을 순차적으로 생성하여 하나의 패킷을 완성한다. 제1 및 제2 수신부들(1122, 1212)은 하나의 패킷을 수신하여 물리적 계층 패킷(PLP), 데이터 링크 계층 패킷(DLLP) 및 전송 계층 패킷(PLP)순서로 디코딩하여 데이터를 읽어낸다.
본 발명의 제1 및 제2인터페이스 회로(1120, 1210)는 전송 계층에 복수의 데이터를 패키징하고, 헤더에 복수의 데이터 패키징 여부에 대한 정보를 담아 하나의 패킷을 생성할 수 있다.
도 4는 패킷의 헤더를 보여주는 블록도이다. 도 4를 참조하면, 헤더는 4바이트의 크기를 가질 수 있다. 헤더에는 복수의 예비 비트들(Reserved Bit, R)이 존재한다. 복수의 예비 비트들은 정보를 포함하고 있지 않다. 따라서, 본 발명에서는 패킷에 복수의 데이터의 패키징 여부에 대한 정보를 예비 비트에 저장할 수 있다. 도 2 및 도 4를 참조하면, 헤더 발생기(1121_2)는 패킷에 복수의 패키징 여부에 대한 정보를 예비 비트에 저장할 수 있다.
헤더에서, 복수의 예비 비트 영역을 제외한 나머지 비트들에는 헤더의 길이, 페이로드의 존재 여부, 및 패킷의 종류에 대한 정보들을 포함할 수 있다.
도 5는 본 발명의 제1 실시 예에 따른 패킷의 전송 계층 패킷을 보여주는 블록도이다. 도 5를 참조하면, 제1 전송 계층 패킷(TLP1)은 헤더(Header), 페이로드(Payload) 및 ECRC 영역을 포함할 수 있다. 제1 전송 계층 패킷(TLP1)의 페이로드는 복수의 데이터(DATA1~DATAn)만을 포함할 수 있다. 복수의 데이터(DATA1~DATAn)에 대한 복수의 어드레스들(ADDR1~ADDRn)을 포함하는 메타 데이터는 헤더에 저장될 수 있다. 헤더는 패킷에 복수의 데이터(DATA1~DATAn) 및 멀티 데이터의 포함 여부에 대한 정보 비트를 저장할 수 있다. 이러한 정보 비트는 헤더의 포함된 예비 비트(Reserved Bit)에 저장될 수 있다. 하지만, 본 발명은 이에 한정되지 않는다. 패킷의 유형에 대한 정보 비트는 페이로드의 특정 영역에 포함될 수 있다.
제1 전송 계층 패킷(TLP1)을 포함하는 패킷은 페이로드에 복수의 데이터(DATA1~DATAn)만을 패키징하므로, 한 번에 많은 데이터를 전송할 수 있다.
도 6은 본 발명의 제2 실시 예에 따른 패킷의 전송 계층 패킷을 보여주는 블록도이다. 도 6을 참조하면, 제2 전송 계층 패킷(TLP2)은 헤더(Header), 페이로드(Payload), 및 ECRC 영역으로 구성된다. 페이로드는 복수의 데이터(DATA1~DATAn) 및 어드레스들(ADDR1~ADDRn)을 포함하는 메타 데이터로 구성될 수 있다. 어드레스들(ADDR1~ADDRn)은 복수의 데이터(DATA1~DATAn) 각각의 주소 정보이다.
본 발명의 실시 예에 따른 헤더는 패킷의 유형에 대한 정보가 포함된다. 구체적으로, 헤더는 패킷에 복수의 데이터(DATA1~DATAn) 및 멀티 데이터의 포함 여부에 대한 정보 비트를 저장할 수 있다. 이러한 정보 비트는 헤더의 포함된 예비 비트에 저장될 수 있다. 하지만, 본 발명은 이에 한정되지 않는다. 패킷의 유형에 대한 정보 비트는 페이로드의 특정 영역에 포함될 수 있다.
도 7은 본 발명의 제1 실시 예에 따른 인터페이스 회로의 패킷 전송 방법을 보여주는 순서도이다. 도 1 내지 도 7을 참조하면, S110 단계에서, 제1 인터페이스 회로(1120)는 외부 또는 호스트 프로세서(1100)로부터 데이터 쓰기 명령을 수신한다. 쓰기 명령이 발생하면, 복수의 캐시 라인들(CL1~CLn)에 저장된 복수의 데이터(DATA1~DATAn)는 저장 장치(1300)에 프로그램된다. 복수의 데이터(DATA1~DATAn)는 제1 및 제2 인터페이스 회로들(1120, 1210)을 통해 전송된다. 이때, 복수의 데이터를 각각 전송한다면, 오버 헤드로 인해 효율이 감소할 것이다.
S120 단계에서, 제1 인터페이스 회로(1120)는 헤더 및 페이로드를 생성한다. 제1 페이로드 발생기(1121_1)는 복수의 데이터(DATA1~DATAn)를 하나의 페이로드에 패키징한다. 또는, 제1 페이로드 발생기(1121_1)는 복수의 데이터(DATA1~DATAn) 및 복수의 어드레스들(ADDR1~ADDRn)을 포함하는 메타 데이터를 하나의 페이로드에 패키징한다. 제1 헤더 발생기(1121_2)는 패킷의 유형을 나타내는 정보를 포함하는 헤더를 생성한다. 구체적으로, 제1 헤더 발생기(1121_2)는 페이로드에 복수의 데이터의 포함 여부를 나타내는 정보를 헤더의 예비 비트에 저장한다. 또한, 제1 헤더 발생기(1121_2)는 복수의 데이터(DATA1~DATAn) 각각에 대한 어드레스들(ADDR1~ADDRn)을 헤더에 저장할 수 있다. 제1 헤더 발생기(1121_2)는 프로그램 명령에 대한 커맨드(CMD)를 헤더에 저장할 수 있다.
S130 단계에서, 제1 결합기(1121_3)는 헤더와 페이로드를 결합하여 전송 계층 패킷(TLP)을 생성한다. 전송 계층 패킷(TLP)는 제1 및 제2 전송 계층 패킷(TLP1, TLP2) 형태일 수 있다. 제1 결합기(1121_3)는 전송 계층 패킷(TLP)에 시퀀스 번호, LCRC, 및 프레이밍 비트를 덧붙여 물리적 계층 패킷(PLP)을 생성하여 제1 전송기(1121_4)로 출력한다.
S140 단계에서, 제1 전송기(1121_4)는 물리적 계층 패킷(PLP) 형태의 하나의 패킷을 전송한다. 구체적으로 제1 인터페이스 회로(1120)에서 제2 인터페이스 회로(1210)로 하나의 패킷이 전송된다.
도 8은 본 발명의 제1 실시 예에 따른 인터페이스 회로의 패킷 수신 방법을 보여주는 순서도이다. 도 1 내지 도 8을 참조하면, S210 단계에서, 제2 인터페이스 회로(1210)의 제2 수신기(1211_1)는 제1 인터페이스 회로(1120)로부터 하나의 패킷을 수신한다. 제2 수신기(1211_1)는 하나의 패킷을 제2 디코더(1211_2)로 출력한다.
S220 단계에서, 제2 디코더(1211_2)는 하나의 패킷을 디코딩한다. 제2 디코더(1211_2)는 헤더를 디코딩한다. 제2 디코더(1211_2)는 디코딩한 헤더를 통해, 페이로드에 복수의 데이터 포함 여부를 확인한다.
S230 단계에서, 헤더를 통해 페이로드에 복수의 데이터가 포함되어 있음이 확인된다면, 제2 디코더(1211_2)는 페이로드에 포함된 복수의 데이터(DATA1~DATAn) 및 어드레스들(ADDR1~ADDRn)을 포함하는 메타 데이터를 확인한다.
S240 단계에서, 제2 인터페이스(1210)는 복수의 어드레스들(ADDR1~ADDRn)을 확인하고, 복수의 데이터(DATA1~DATAn) 각각을 어드레스에 맞게 저장 장치(1300)에 프로그램할 수 있다.
도 9는 본 발명의 제3 실시 예에 따른 패킷의 전송 계층 패킷을 보여주는 블록도이다. 도 9는 읽기 명령에 대한 정보를 포함하는 패킷의 제3 전송 계층 패킷(TLP3)을 보여준다. 도 1 내지 도 3 및 도 9를 참조하면, 읽기 명령이 발생하면, 호스트 프로세서(1100)는 저장 장치(1300)로부터 읽어와야 하는 데이터에 대한 복수의 어드레스들(ADDR1~ADDRn)을 전송해야 한다. 만약, 호스트 프로세서(1100)가 복수의 어드레스를 출력해야 할 때, 복수의 어드레스들(ADDR1~ADDRn)이 각각 출력된다면, 오버 헤드가 발생하여 효율이 감소할 것이다.
따라서, 복수의 데이터(DATA1~DATAn)를 전송할 때와 마찬가지로 호스트 프로세서(1100)의 제1 인터페이스 회로(1120)는 복수의 어드레스들(ADDR1~ADDR) 하나의 패킷에 메타 데이터 형태로 패키징하여 전송할 수 있다. 복수의 어드레스들(ADDR1~ADDRn)을 포함하는 메타 데이터는 제3 전송 계층 패킷(TLP3)에 패키징 될 수 있다. 제3 전송 계층 패킷(TLP3)의 페이로드에는 복수의 어드레스들(ADDR1~ADDRn)을 포함하는 메타 데이터가 포함될 수 있다. 헤더는 패킷의 유형에 대한 정보를 포함할 수 있다. 구체적으로, 헤더는 페이로드에 복수의 에드레스들(ADDR1~ADDRn)의 포함 여부에 대한 정보를 예비 비트에 저장할 수 있다. 또한, 헤더는 읽기 명령 정보를 포함할 수 있다.
도 10은 본 발명의 제2 실시 예에 따른 인터페이스 회로의 패킷 전송 방법을 보여주는 순서도이다. 도 1, 도 2, 도 9, 도 10을 참조하면, S310 단계에서, 외부, 또는 호스트 프로세서(1100)에서 데이터의 읽기 요청이 발생한다. 데이터의 읽기 요청이 발생하면, 호스트 프로세서(1100)는 저장 장치(1300)로부터 데이터를 읽어올 수 있다.
S320 단계에서, 제1 인터페이스 회로(1120)의 제1 페이로드 발생기(1121_1)는 복수의 어드레스들(ADDR1~ADDRn)을 포함하는 메타 데이터를 하나의 페이로드에 패키징한다.
S330 단계에서, 제1 헤더 발생기(1121_2)는 패킷의 유형에 대한 정보를 포함하는 헤더를 발생한다. 구체적으로, 제1 헤더 발생기(1121_2)는 헤더의 예비 비트에 페이로드에 복수의 어드레스들(ADDR1~ADDRn) 포함 여부에 대한 정보를 저장할 수 있다.
S340 단계에서, 제1 결합기(1121_3)는 페이로드 및 헤더를 수신하여 하나의 패킷을 완성한 한 뒤 전송한다. 구체적으로, 제1 결합기(1121_3)는 페이로드 및 헤더를 결합하여 전송 계층 패킷(TLP)을 생성한다. 전송 계층 패킷(TLP)은 제3 전송 계층 패킷(TLP3) 형태일 수 있다. 제1 결합기(1121_3)는 전송 계층 패킷(TLP)에 시퀀스 번호, LCRC 영역, 및 프레이밍 비트를 추가하여 물리적 계층 패킷(PLP) 형태의 하나의 패킷을 생성할 수 있다. 제1 인터페이스 회로(1120)는 하나의 패킷을 제2 인터페이스 회로(1210)로 전송할 수 있다.
도 11은 본 발명의 제2 실시 예에 따른 인터페이스 회로의 패킷 수신 방법을 보여주는 순서도이다. 도 1, 도 2, 도 8 및 도 10을 참조하면, S410 단계에서, 제2 인터페이스 회로(1210)의 제2 수신기(1211_1)는 제1 인터페이스 회로(1120)로부터 하나의 패킷을 수신할 수 있다. 제2 수신기(1211_1)는 하나의 패킷을 제2 디코더(1211_2)로 출력할 수 있다.
S420 단계에서, 제2 디코더(1211_2)는 수신한 하나의 패킷의 헤더를 디코딩한다. 구체적으로, 제2 디코더(1211_2)는 헤더를 디코딩하여 페이로드에 복수의 어드레스들(ADDR1~ADDRn)의 포함 여부를 확인할 수 있다.
S430 단계에서, 페이로드에 복수의 어드레스가 포함되었다면, 제2 디코더(1211_2)는 페이로드를 분석한다. 제2 인터페이스 회로(1210)는 복수의 어드레스(ADDR1~ADDRn)를 저장 장치(1300)로 출력할 수 있다.
도 12는 본 발명의 제4 실시 예에 따른 패킷의 전송 계층 패킷을 보여주는 블록도이다. 도 1, 도 2를 참조하면, 도 12는 읽기 명령에 따라, 저장 장치(1300)로부터 읽어온 데이터에 대한 제4 전송 계층 패킷(TLP4)을 보여준다. 도 9 내지 도 11을 참조하면, 저장 장치(1300)는 호스트 프로세서(1100)로부터 읽기 명령 및 복수의 어드레스들(ADDR1~ADDRn)을 수신한다. 저장 장치(1300)는 복수의 어드레스들(ADDR1~ADDRn)에 대응하는 복수의 데이터(DATA1~DATAn)를 제2 인터페이스 회로(1210)로 출력한다.
제2 인터페이스 회로(1210)는 복수의 데이터(DATA1~DATAn) 각각을 복수의 패킷에 패키징하여 출력할 수 있다. 하지만, 이와 같은 방법을 사용한다면, 전송 시 발생하는 오버 헤드가 증가할 수 있다. 따라서 제2 인터페이스 회로(1210)는 복수의 데이터(DATA1~DATAn)를 도 12에 도시된 형태로 제4 전송 계층 패킷(TLP4)에 패키징하여 전송할 수 있다. 제4 전송 계층 패킷(TLP4)의 페이로드는 복수의 데이터(DATA1~DATAn)를 포함할 수 있다. 헤더는 패킷의 유형에 대한 정보를 포함할 수 있다. 구체적으로, 헤더는 페이로드에 복수의 데이터(DATA1~DATAn)의 포함 여부에 대한 정보 비트를 예비 비트에 저장할 수 있다.
도 13은 본 발명의 제3 실시 예에 따른 인터페이스 회로의 패킷 전송 방법을 보여주는 순서도이다. 도 1, 도 2, 도 12 및 도 13을 참조하면, S510 단계에서, 제2 인터페이스 회로(1210)의 제2 페이로드 발생기(1212_1)는 저장 장치(1300)로부터 복수의 데이터(DATA1~DATAn)를 수신한다.
S520 단계에서, 제2 인터페이스 회로(1210)는 헤더 및 페이로드를 생성한다. 구체적으로 제2 인터페이스 회로(1210)의 제2 페이로드 발생기(1212_1)는 복수의 데이터를(DATA1~DATAn)를 하나의 페이로드에 패키징한다. 제2 헤더 발생기(1212_2)는 패킷의 유형에 대한 정보를 포함한 헤더를 발생한다. 구체적으로 제2 헤더 발생기(1212_2)는 페이로드에 복수의 데이터(DATA1~DATAn) 포함 여부에 대한 정보 비트를 헤더의 예비 비트에 저장할 수 있다.
S530 단계에서, 제2 인터페이스 회로(1210)는 하나의 패킷을 완성하여 출력한다. 구체적으로, 제2 인터페이스 회로(1210)의 제2 결합기(1212_3)는 페이로드 및 헤더를 수신하여 전송 계층 패킷(TLP)을 생성한다. 전송 계층 패킷(TLP)은 제4 전송 계층 패킷(TLP4) 형태일 수 있다. 제2 결합기(1212_3)는 전송 계층 패킷에 시퀀스 번호, LCRC, 및 프레이밍 비트를 추가하여 물리적 계층 패킷(PLP) 형태의 하나의 패킷을 생성한다. 제2 결합기(1212_3)는 하나의 패킷을 제2 전송기(1212_4)로 출력한다. 제2 전송기(1212_4)는 수신한 하나의 패킷을 제1 인터페이스 회로(1120)로 출력한다.
도 14는 본 발명의 제3 실시 예에 따른 인터페이스 회로의 패킷 수신 방법을 보여주는 순서도이다. 도 1, 도 2, 도 12 내지 도 14를 참조하면, S610 단계에서, 제1 인터페이스 회로(1120)의 제1 수신기(1122_1)는 제2 인터페이스 회로(1210)로부터 하나의 패킷을 수신한다. 제1 수신기(1122_1)는 하나의 패킷을 제1 디코더(1122_2)로 출력한다.
S620 단계에서, 제1 디코더(1122_2)는 하나의 패킷에 포함된 헤더를 디코딩한다. 구체적으로, 제1 인터페이스 회로(1120)의 제1 디코더(1122_2)는 패킷을 디코딩하고, 헤더를 해석한다. 제1 디코더(1122_2)는 헤더를 통해 하나의 패킷에 복수의 데이터(DATA1~DATAn) 포함 여부를 확인할 수 있다.
S630 단계에서, 하나의 패킷에 복수의 데이터(DATA1~DATAn)가 포함되어 있으면, 페이로드를 해석한다. 제1 디코더(1122_2)는 페이로드를 해석하여 복수의 데이터(DATA1~DATAn)를 읽어낼 수 있다.
S640 단계에서, 제1 인터페이스 회로(1120)는 복수의 데이터(DATA1~DATAn)를 호스트 프로세서(1100)에 저장할 수 있다. 복수의 데이터(DATA1~DATAn)는 호스트 프로세서(1100)의 복수의 캐시 라인들(CL1~CLn)에 저장될 수 있다.
도 15는 본 발명의 실시 예에 따른 인터페이스 회로를 포함하는 저장 장치가 가질 수 있는 구성을 나타낸 블록도이다. 저장 장치(2000)는 복수의 불휘발성 메모리(2100), 메모리 컨트롤러(2300), 인터페이스 회로(2500), 및 커넥터(2700)를 포함할 수 있다.
복수의 불휘발성 메모리(2100) 각각은 데이터를 저장할 수 있다. 실시 예로서, 복수의 불휘발성 메모리(2100) 각각은 플래시(Flash) 메모리일 수 있다. 이 실시 예에서, 저장 장치(2000)는 솔리드 스테이트 드라이브(Solid State Drive)일 수 있다. 그러나, 본 발명의 기술 사상은 위 실시 예에 의해 제한되지 않음이 명백하다. 예컨대, 복수의 불휘발성 메모리(2100) 각각은 PRAM(Phase-change RAM), MRAM(Magnetic RAM), RRAM(Resistive RAM), FRAM(Ferroelectric RAM) 등과 같은 불휘발성 메모리들 중 적어도 하나를 포함할 수 있다. 복수의 불휘발성 메모리(2100)의 작동은 메모리 컨트롤러(2300)에 의해 제어될 수 있다.
인터페이스 회로(2500)는 호스트(Host, 미도시)와 저장 장치(2000) 사이의 데이터 송수신을 인터페이싱할 수 있다. 인터페이스 회로(2500)는 본 발명의 실시 예에 따라 복수의 데이터를 포함한 패킷을 송수신하도록 구성될 수 있다. 즉, 송신해야하는 데이터가 여러 개인 경우, 인터페이스 회로(2500)는 도 1 내지 도 14에 대한 설명에서 언급된 패킷 송수신 동작 중 적어도 하나를 수행할 수 있다. 커넥터(2700)는 저장 장치(2000)를 호스트에 연결하도록 구성된다. 실시 예로서, 인터페이스 회로(2500)는 PCIe 규약에 따라 작동할 수 있다. 이 실시 예에서, 커넥터(2700)는 PCIe 규약에 따른 통신을 가능하게 하도록 구성될 수 있다.
도 15에서, 본 발명의 기술 사상이 적용된 인터페이스 회로(2500)를 포함하는 장치로서 저장 장치(2000)가 제시되었다. 그러나, 본 발명의 기술 사상이 적용된 인터페이스 회로(2500)는 다른 전자 장치에도 포함될 수 있다. 예컨대, 본 발명의 기술 사상이 적용된 인터페이스 회로(2500)는 메인보드(Main Board), 프린터, 스캐너, 모뎀 등 다양한 전자 장치에 포함될 수 있다. 나아가, 본 발명의 기술사상이 적용된 인터페이스 회로(2500)가 PCIe 규약에 따라 작동하는 경우, 인터페이스 회로(2500)는 그래픽 카드나 사운드 카드와 같은 전자 장치에 포함될 수 있다.
도 16은 본 발명의 실시 예가 적용된 저장 장치를 포함하는 컴퓨팅 장치가 가질 수 있는 구성을 나타낸 블록도이다. 컴퓨팅 시스템(3000)은 저장 장치(3100) 및 호스트(3300)를 포함할 수 있다. 호스트(3300)는 버스(3310), 프로세서(3330), 및 시스템 메모리(3350)를 포함할 수 있다. 저장 장치(3100)는 도 15에 나타난 저장 장치(2000, 도 15 참조)와 같은 구성을 가질 수 있다. 저장 장치(3100)의 구성 및 기능에 관한 설명은 도 15에 대한 설명과 중복되는 범위에서 생략된다.
버스(3310)는 컴퓨팅 시스템(3000)의 구성 요소들 사이의 통신 채널을 제공할 수 있다. 예컨대, 버스(3310)는 저장 장치(3100), 프로세서(3330), 및 시스템 메모리(3350) 사이의 통신 채널을 제공할 수 있다. 버스(3310)는 도 16에 도시되지 않은 다른 구성 요소들 사이의 통신 채널을 제공할 수 있다. 버스(3310)는 컴퓨팅 시스템(3000)의 표준 인터페이스 규약에 따라 작동할 수 있다. 실시 예로서, 버스(3310)는 PCIe 규약에 따라 작동할 수 있다. 그러나, 이것은 실시 예일 뿐이며, 버스(3310)는 다른 다양한 통신 규약에 따라 작동할 수 있다.
프로세서(3330)는 버스(3310)를 통해 컴퓨팅 시스템(3000)의 구성 요소를 제어할 수 있다. 예컨대, 프로세서(3330)는 버스(3310)를 통해 시스템 메모리(3350) 및 저장 장치(3100)를 제어할 수 있다. 실시 예로서, 프로세서(3330)는 PCIe 규약에 따라 컴퓨팅 시스템(3000)의 구성 요소를 제어할 수 있다. 실시 예로서, 프로세서(3330)는 범용 CPU(Central Processing Unit) 또는 어플리케이션 프로세서(Application Processor)일 수 있다.
시스템 메모리(3350)는 버스(3330)를 통해 프로세서(3330) 및 저장 장치(3100)와 통신할 수 있다. 시스템 메모리(3350)는 SRAM(Static RAM), DRAM(Dynamic RAM), SDRAM(Synchronous DRAM) 등과 같은 휘발성 메모리, 또는 PRAM, MRAM, RRAM, FRAM 등과 같은 불휘발성 메모리를 포함할 수 있다.
호스트(3300)는 저장 장치(3100)에 저장된 데이터를 불러오거나 저장 장치(3100)에 저장할 데이터를 전송할 수 있다.
저장 장치(3100)는 메모리 컨트롤러(2300, 도 15 참조)를 포함할 수 있다. 메모리 컨트롤러(2300)는 버스(3310) 또는 프로세서(3330)에 의해 인식되는 장치 정보를 가질 수 있다. 예컨대, 저장 장치(3100)가 커넥터(2700, 도 15 참조)에 의해 버스(3310)에 연결되면, 메모리 컨트롤러(2300)는 버스(3310) 또는 프로세서(3330)와 소정의 통신을 수행할 수 있다. 소정의 통신을 수행함으로써, 저장 장치(3100)는 버스(3310) 또는 프로세서(3330)에 의해 저장 장치인 것으로 식별될 수 있다.
도 17은 본 발명의 다른 실시 예에 따른 컴퓨팅 장치를 보여주는 블록도이다. 도 17을 참조하면, 컴퓨팅 장치(4000)는 프로세서(4100), 루트 컴플렉스(4200), 그래픽 가속기(4300), 시스템 메모리(4400), 스위치(4500), 그리고 제1 내지 제3 입출력 장치들(4600~4800)을 포함할 수 있다.
프로세서(4100)는 컴퓨팅 장치(4000)의 구성 요소들을 제어할 수 있다. 프로세서(4100)는 루트 컴플렉스(4200)와 연결될 수 있다. 프로세서(4100)와 루트 컴플렉스(4200)는 인터페이스 회로를 통해 연결될 수 있다. 인터페이스 회로는 PCIe 규약에 의해 작동할 수 있다. 프로세서(4100)는 루트 컴플렉스(4200)를 통해 그래픽 가속기(4300), 시스템 메모리(4400), 그리고 제1 내지 제3 입출력 장치들(4600~4800)을 제어할 수 있다.
루트 컴플렉스(4200)는 인터페이스 회로를 통해 프로세서(4100)와 그래픽 가속기(4300), 시스템 메모리(4400), 및 스위치(4500)를 연결하는 역할을 할 수 있다. 인터페이스 회로는 PCIe 규약에 의해 작동할 수 있다. 루트 컴플렉스(4200)의 인터페이스 회로는 도 1 내지 도 14에서 설명한 복수의 데이터 및 어드레스를 포함한 패킷을 패키징 또는 디코딩하여 송수신할 수 있다.
그래픽 가속기(4300)는 루트 컴플렉스(4200)와 연결될 수 있다. 그래픽 가속기(4300)는 그래픽 처리 속도를 빠르게 하기 위해 사용되는 장치이다. 그래픽 가속기(4300)는 프로세서(4100)를 대신하여 그래픽을 처리함으로써, 프로세서(4100)의 부담을 줄일 수 있다.
시스템 메모리(4400)는 루트 컴플렉스(4200)를 통해 프로세서(4100)와 통신할 수 있다. 시스템 메모리(4400)는 프로세서(4100)에 의해 제어된다. 시스템 메모리(4400)는 SRAM(Static RAM), DRAM(Dynamic RAM), SDRAM(Synchronous DRAM) 등과 같은 휘발성 메모리, 또는 PRAM, MRAM, RRAM, FRAM 등과 같은 불휘발성 메모리를 포함할 수 있다.
스위치(4500)는 루트 컴플렉스(4500)와 제1 내지 제3 입출력 장치들(4600~4800) 사이의 통신을 제어할 수 있다. 또한, 스위치(4500)는 제1 내지 제3 입출력 장치들(4600~4800) 사이의 통신을 제어할 수 있다. 스위치(4500)는 루트 컴플렉스(4500)로부터 수신한 패킷을 제1 내지 제3 입출력 장치들(4600~4800) 중 하나로 출력할 수 있다. 또한, 스위치(4500)는 제1 내지 제3 입출력 장치들(4600~4800) 중 하나로부터 수신한 패킷을 프로세서(4100) 또는 다른 하나의 입출력 장치로 출력할 수 있다. 스위치(4500)는 인터페이스 회로를 통해 루트 컴플렉스(4200) 및 제1 내지 제3 입출력 장치들(4600~4800)과 통신할 수 있다. 인터페이스 회로는 PCIe 규약에 의해 작동할 수 있다.
제1 내지 제3 입출력 장치들(4600~4800)은 스위치(4500)를 통해 루트 컴플렉스(4500)와 통신할 수 있다. 또한 제1 내지 제3 입출력 장치들(4600~4800)은 스위치(4500)를 통해 서로 통신할 수 있다. 이를 포인트 투 포인트(Point to Point)통신이라 한다. PCIe 인터페이스 회로는 포인트 투 통신이 가능하다. 제1 내지 제3 입출력 장치들(4600~4800)은 인터페이스 회로를 통해 통신한다. 제1 내지 제3 입출력 장치들(4600~4800)의 도 1 내지 도 14에서 설명한 복수의 데이터 및 어드레스를 포함한 패킷을 패키징 또는 디코딩하여 송수신할 수 있다.
각각의 블록도에 도시된 장치 구성은 발명의 이해를 돕기 위한 것이다. 각각의 블록은 기능에 따라 더 작은 단위의 블록들로 형성될 수 있다. 또는, 복수의 블록들은 기능에 따라 더 큰 단위의 블록을 형성할 수 있다. 즉, 본 발명의 기술 사상은 블록도에 도시된 구성에 의해 한정되지 않는다.
이상에서 본 발명에 대한 실시 예를 중심으로 본 발명이 설명되었다. 다만, 본 발명이 속하는 기술 분야의 특성상, 본 발명이 이루고자 하는 목적은 본 발명의 요지를 포함하면서도 위 실시 예들과 다른 형태로 달성될 수 있다. 따라서, 위 실시 예들은 한정적인 것이 아니라 설명적인 측면에서 이해되어야 한다. 즉, 본 발명의 요지를 포함하면서 본 발명과 같은 목적을 달성할 수 있는 기술 사상은 본 발명의 기술 사상에 포함되는 것으로 해석되어야 한다.
따라서, 본 발명의 본질적인 특성을 벗어나지 않는 범위 내에서 수정 또는 변형된 기술 사상은 본 발명이 청구하는 보호 범위에 포함되는 것이다. 또한, 본 발명의 보호 범위는 위 실시 예들로 한정되는 것이 아니다.
1100: 호스트 프로세서
1200: 입출력 장치
1300: 저장 장치
1400: 호스트 메모리
2100: 불휘발성 메모리 장치
2300: 메모리 컨트롤러
2500: 입출력 회로
2700: 커넥터
3100: 저장 장치
3300: 호스트
4100: 프로세서
5200: 루트 컴플렉스
4300: 그래픽 가속기
4400: 시스템 메모리
4500: 스위치
4600~4800: 제1 내지 제3 입출력 장치

Claims (10)

  1. 인터페이스 회로의 패킷 전송 방법에 있어서,
    복수의 데이터를 페이로드 형태로 패키징하는 단계;
    상기 복수의 데이터의 패키징 여부에 대한 정보를 헤더, 상기 페이로드 또는 상기 복수의 데이터의 전송 오류 확인 코드를 포함하는 CRC 영역 중 어느 하나에 저장하는 단계;
    상기 헤더, 상기 페이로드, 및 상기 CRC 영역을 결합하여 전송 계층 패킷을 생성하는 단계; 및
    상기 전송 계층 패킷을 포함하는 패킷을 출력하는 단계를 포함하는 패킷 전송 방법.
  2. 제 1 항에 있어서,
    상기 복수의 데이터 각각에 대한 어드레스들을 지시하는 메타 데이터는 상기 헤더, 상기 페이로드 또는 상기 CRC 영역 중 적어도 하나에 저장되는 단계를 더 포함하는 패킷 전송 방법.
  3. 제 1 항에 있어서,
    상기 복수의 데이터의 패키징 여부에 대한 정보는 상기 헤더의 예비 비트 영역에 저장되는 패킷 전송 방법.
  4. 인터페이스 회로의 패킷 전송 방법에 있어서,
    패킷을 수신하는 단계;
    상기 수신한 패킷의 전송 계층 패킷에 복수의 데이터 패키징 여부를 확인하는 단계; 및
    상기 확인 결과에 따라, 상기 전송 계층 패킷에 페이로드 형태로 패키징된 상기 복수의 데이터를 디코딩하여 출력하는 단계를 포함하는 패킷 전송 방법.
  5. 제 4 항에 있어서,
    상기 복수의 데이터 패키징 여부는 상기 전송 계층 패킷의 헤더 또는 상기 복수의 데이터의 전송 오류 확인 코드를 포함하는 CRC 영역 중 적어도 하나에 저장된 정보에 의해 확인되는 패킷 전송 방법.
  6. 제 4 항에 있어서,
    상기 복수의 데이터 각각에 대한 어드레스들을 지시하는 메타 데이터를 디코딩하는 단계를 더 포함하는 패킷 전송 방법.
  7. PCIe 규약에 따라 제1 및 제2 패킷을 송수신하기 위한 인터페이스 회로에 있어서,
    상기 제 1 패킷을 출력하는 전송부; 및
    상기 제2 패킷을 수신하는 수신부를 포함하되,
    상기 전송부는 복수의 데이터를 상기 제1 패킷에 페이로드 형태로 패키징하기 위한 페이로드 발생기;
    상기 복수의 데이터의 패키징 여부에 대한 비트를 포함하는 헤더를 생성하기 위한 헤더 발생기;
    상기 페이로드, 상기 헤더 및 상기 복수의 데이터의 전송 오류 확인 코드를 포함하는 제1 CRC 영역으로 구성된 전송 계층 패킷을 포함하는 상기 제1 패킷을 생성하는 결합기; 및
    상기 제1 패킷을 출력하는 전송기를 포함하는 인터페이스 회로.
  8. 제 7 항에 있어서,
    상기 헤더 발생기는 상기 복수의 데이터에 대한 어드레스들을 지시하는 메타 데이터를 포함하는 상기 헤더를 생성하는 인터페이스 회로.
  9. 제 7 항에 있어서,
    상기 결합기는 상기 전송 계층 패킷 양단에 시퀀스 번호 및 제2 CRC 영역을 포함하는 데이터 링크 계층 패킷을 생성하는 인터페이스 회로.
  10. 제 7 항에 있어서,
    상기 수신부는 상기 제2 패킷을 수신하는 수신기; 및
    상기 제 2 패킷의 복수의 데이터 패키징 여부를 판별하고, 상기 제2 패킷의 페이로드를 디코딩하여 복수의 데이터를 출력하는 디코더를 더 포함하는 인터페이스 회로.


KR1020140102427A 2014-08-08 2014-08-08 인터페이스 회로 및 그것의 패킷 전송 방법 KR102173089B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020140102427A KR102173089B1 (ko) 2014-08-08 2014-08-08 인터페이스 회로 및 그것의 패킷 전송 방법
US14/697,815 US10185687B2 (en) 2014-08-08 2015-04-28 Interface circuit and packet transmission method thereof
US16/216,071 US10719472B2 (en) 2014-08-08 2018-12-11 Interface circuit and packet transmission method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140102427A KR102173089B1 (ko) 2014-08-08 2014-08-08 인터페이스 회로 및 그것의 패킷 전송 방법

Publications (2)

Publication Number Publication Date
KR20160018987A true KR20160018987A (ko) 2016-02-18
KR102173089B1 KR102173089B1 (ko) 2020-11-04

Family

ID=55267514

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140102427A KR102173089B1 (ko) 2014-08-08 2014-08-08 인터페이스 회로 및 그것의 패킷 전송 방법

Country Status (2)

Country Link
US (2) US10185687B2 (ko)
KR (1) KR102173089B1 (ko)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10157133B2 (en) 2015-12-10 2018-12-18 Arm Limited Snoop filter for cache coherency in a data processing system
US9900260B2 (en) * 2015-12-10 2018-02-20 Arm Limited Efficient support for variable width data channels in an interconnect network
US9990292B2 (en) 2016-06-29 2018-06-05 Arm Limited Progressive fine to coarse grain snoop filter
US10042766B1 (en) 2017-02-02 2018-08-07 Arm Limited Data processing apparatus with snoop request address alignment and snoop response time alignment
US11347662B2 (en) * 2017-09-30 2022-05-31 Intel Corporation Method, apparatus, system for early page granular hints from a PCIe device
US11477049B2 (en) * 2018-08-02 2022-10-18 Xilinx, Inc. Logical transport over a fixed PCIE physical transport network
KR20200094525A (ko) 2019-01-30 2020-08-07 삼성전자주식회사 서로 연관된 복수의 데이터를 포함하는 하나의 파일을 처리하는 전자 장치
US10817462B1 (en) 2019-04-26 2020-10-27 Xilinx, Inc. Machine learning model updates to ML accelerators
US11074208B1 (en) 2019-07-24 2021-07-27 Xilinx, Inc. Routing network using global address map with adaptive main memory expansion for a plurality of home agents
CN113439268B (zh) * 2020-01-22 2023-01-06 华为技术有限公司 一种基于PCIe的数据传输方法、装置及系统
WO2024072070A1 (ko) * 2022-09-30 2024-04-04 현대자동차주식회사 비지상 네트워크에서 음성 패킷의 결합 전송의 방법 및 장치

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040233933A1 (en) * 2003-05-23 2004-11-25 Munguia Peter R. Packet combining on PCI express
US20050251611A1 (en) * 2004-04-27 2005-11-10 Creta Kenneth C Transmitting peer-to-peer transactions through a coherent interface
US20070079044A1 (en) * 2005-07-11 2007-04-05 Nvidia Corporation Packet Combiner for a Packetized Bus with Dynamic Holdoff time
JP5252292B2 (ja) * 2006-11-01 2013-07-31 株式会社グラフィン インタフェース装置及び電子装置

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4405044B2 (ja) 2000-06-21 2010-01-27 富士通株式会社 ネットワーク中継装置およびパケット結合方法
US20030035371A1 (en) 2001-07-31 2003-02-20 Coke Reed Means and apparatus for a scaleable congestion free switching system with intelligent control
US20030126188A1 (en) 2001-12-27 2003-07-03 Zarlink Semiconductor V.N. Inc. Generic header parser providing support for data transport protocol independent packet voice solutions
US7221684B1 (en) * 2002-01-08 2007-05-22 Cisco Technology, Inc. Increasing network efficiency using packet compression and decompression
US7733915B2 (en) 2003-05-01 2010-06-08 Genesis Microchip Inc. Minimizing buffer requirements in a digital video system
EP1897333B1 (en) 2005-06-21 2013-03-27 Partners for Corporate Research International Method for parallel data integrity checking of pci express devices
JP4786575B2 (ja) 2007-03-20 2011-10-05 富士通株式会社 コンピュータとネットワークインタフェースコントローラ間のデータ転送方法、プログラム及びネットワークインタフェースコントローラ
US8139575B2 (en) 2007-06-29 2012-03-20 International Business Machines Corporation Device, system and method of modification of PCI express packet digest
US8677068B2 (en) 2010-06-18 2014-03-18 Lsi Corporation Scalable storage devices
US8514797B2 (en) 2010-08-03 2013-08-20 Qualcomm Incorporated Dynamic bit allocation for communication networks subject to burst interference
US8856420B2 (en) 2011-12-27 2014-10-07 Intel Corporation Multi-protocol I/O interconnect flow control
US20130173837A1 (en) 2011-12-30 2013-07-04 Advanced Micro Devices, Inc. Methods and apparatus for implementing pci express lightweight notification protocols in a cpu/memory complex
US20130173834A1 (en) 2011-12-30 2013-07-04 Advanced Micro Devices, Inc. Methods and apparatus for injecting pci express traffic into host cache memory using a bit mask in the transaction layer steering tag
US9396152B2 (en) * 2013-03-15 2016-07-19 Intel Corporation Device, system and method for communication with heterogenous physical layers

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040233933A1 (en) * 2003-05-23 2004-11-25 Munguia Peter R. Packet combining on PCI express
US20050251611A1 (en) * 2004-04-27 2005-11-10 Creta Kenneth C Transmitting peer-to-peer transactions through a coherent interface
US20070079044A1 (en) * 2005-07-11 2007-04-05 Nvidia Corporation Packet Combiner for a Packetized Bus with Dynamic Holdoff time
JP5252292B2 (ja) * 2006-11-01 2013-07-31 株式会社グラフィン インタフェース装置及び電子装置

Also Published As

Publication number Publication date
US20190108156A1 (en) 2019-04-11
US10185687B2 (en) 2019-01-22
KR102173089B1 (ko) 2020-11-04
US20160041936A1 (en) 2016-02-11
US10719472B2 (en) 2020-07-21

Similar Documents

Publication Publication Date Title
KR102173089B1 (ko) 인터페이스 회로 및 그것의 패킷 전송 방법
TWI605337B (zh) 用以在統一的協定通訊中交換錯誤資訊之設備、方法及系統
US7475174B2 (en) Flash / phase-change memory in multi-ring topology using serial-link packet interface
CN101594306B (zh) 为分组报头提供前缀
KR20110010707A (ko) 슬레이브 디바이스 사이에서 직접 데이터를 전송하는 방법
US9620180B2 (en) Memory system and electronic device
CN111930676A (zh) 多处理器间的通信方法、装置、系统及存储介质
US8364872B2 (en) Slave and communicating method between a master and the same
US20100185811A1 (en) Data processing system and method
US20190213162A1 (en) Integrated circuit system
KR102219759B1 (ko) 저장 장치, 그것을 포함하는 데이터 저장 시스템 및 그것의 동작 방법
TWI704453B (zh) 具有通訊機制的計算系統及其操作方法
KR101865261B1 (ko) 입력 출력 데이터 정렬
CN104184543A (zh) 一种数据传输的方法、装置和系统
US7822040B2 (en) Method for increasing network transmission efficiency by increasing a data updating rate of a memory
US10853255B2 (en) Apparatus and method of optimizing memory transactions to persistent memory using an architectural data mover
US20160034405A1 (en) Heterogeneous memory system and data communication method in the same
TWI582599B (zh) 資料傳輸方法、記憶體控制器、資料傳輸系統
US11314460B2 (en) Solid state drive supporting both byte addressable protocol and block addressable protocol
CN109800202B (zh) 一种基于pcie的数据传输系统、方法及装置
KR100801884B1 (ko) 플래시 메모리, 플래시 메모리의 제어 방법 및 직렬인터페이스 장치
CN111209221A (zh) 存储系统
US20110167210A1 (en) Semiconductor device and system comprising memories accessible through dram interface and shared memory region
KR101192594B1 (ko) 슬레이브 디바이스 사이에서 직접 데이터를 전송하는 방법
CN117009259A (zh) 一种l2p加速器

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant