KR20230045306A - 흐름 제어 모니터링을 통하여 동작을 제어하는 스토리지 장치 및 시스템 - Google Patents

흐름 제어 모니터링을 통하여 동작을 제어하는 스토리지 장치 및 시스템 Download PDF

Info

Publication number
KR20230045306A
KR20230045306A KR1020210128005A KR20210128005A KR20230045306A KR 20230045306 A KR20230045306 A KR 20230045306A KR 1020210128005 A KR1020210128005 A KR 1020210128005A KR 20210128005 A KR20210128005 A KR 20210128005A KR 20230045306 A KR20230045306 A KR 20230045306A
Authority
KR
South Korea
Prior art keywords
frequency
controller
clock signal
internal clock
flow
Prior art date
Application number
KR1020210128005A
Other languages
English (en)
Inventor
임재환
전진완
김재은
김지훈
명기현
유현정
이정우
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020210128005A priority Critical patent/KR20230045306A/ko
Priority to US17/706,137 priority patent/US11733872B2/en
Priority to EP22166658.9A priority patent/EP4155952A1/en
Priority to CN202210563947.8A priority patent/CN115878524A/zh
Publication of KR20230045306A publication Critical patent/KR20230045306A/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/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4265Bus transfer protocol, e.g. handshake; Synchronisation on a point to point bus
    • G06F13/4269Bus transfer protocol, e.g. handshake; Synchronisation on a point to point bus using a handshaking protocol, e.g. Centronics connection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • 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/1668Details of memory controller
    • G06F13/1689Synchronisation and timing concerns
    • 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/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0625Power saving in storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

시스템은, 링크를 통하여 연결되는 송신 장치 및 수신 장치를 포함한다. 상기 수신 장치는, 트랜잭션 레이어 패킷들을 수신하여 저장하는 수신 버퍼 및 상기 수신 버퍼의 점유 상태를 모니터링하여 플로우 컨트롤 패킷들을 생성하는 수신 플로우 컨트롤러를 포함한다. 상기 송신 장치는, 상기 수신 장치로 전송될 펜딩 트랜잭션 레이어 패킷들을 저장하는 송신 버퍼, 상기 수신 장치로부터 수신되는 플로우 컨트롤 패킷들에 기초하여 상기 수신 장치로 전송되는 트랜잭션 레이어 패킷의 플로우를 제어하는 송신 플로우 컨트롤러 및 상기 송신 버퍼의 상태 및 상기 송신 플로우 컨트롤러의 상태를 모니터링하여 상기 송신 장치의 내부 클록 신호의 주파수를 제어하는 다이내믹 주파수 컨트롤러를 포함한다.

Description

흐름 제어 모니터링을 통하여 동작을 제어하는 스토리지 장치 및 시스템{Storage device and system of controlling operation through flow control monitoring}
본 발명은 반도체 집적 회로에 관한 것으로서, 더욱 상세하게는 흐름 제어 모니터링을 통하여 동작을 제어하는 스토리지 장치 및 시스템에 관한 것이다.
최근 메모리 장치를 이용하는 SSD(solid state drive)와 같은 스토리지 장치가 널리 사용되고 있다. 상기와 같은 스토리지 장치는 기계적인 구동부가 없어 안정성 및 내구성이 뛰어나며 정보의 액세스 속도가 매우 빠르고 전력 소모가 적다는 장점이 있다. 최근 들어 노트북과 같은 전자 시스템뿐만 아니라, 자동차, 항공기, 드론(drone) 등과 같은 다양한 종류의 시스템에 전자 회로가 적용됨에 따라, 스토리지 장치 역시 다양한 종류의 시스템에서 사용되고 있다.
스토리지 장치가 시스템이 요구하는 성능을 충족하지 못하는 경우 시스템 전체의 성능이 열화된다. 한편, 시스템이 요구하는 수준보다 스토리지 장치의 동작 속도를 과도하게 증가시키는 경우 스토리지 장치 및 이를 포함하는 시스템의 소모 전력이 불필요하게 증가할 수 있다.
상기와 같은 문제점을 해결하기 위한 본 발명의 일 목적은, 송신 장치 및 수신 장치 사이의 전송 플로우를 효율적으로 제어할 수 있는 시스템을 제공하는 것이다.
또한 본 발명의 일 목적은, 호스트 장치와의 전송 플로우를 효율적으로 제어할 수 있는 스토리지 장치를 제공하는 것이다.
상기 일 목적을 달성하기 위해, 본 발명의 실시예들에 따른 시스템은, 링크를 통하여 연결되는 송신 장치 및 수신 장치를 포함한다. 상기 수신 장치는, 트랜잭션 레이어 패킷들을 수신하여 저장하는 수신 버퍼 및 상기 수신 버퍼의 점유 상태를 모니터링하여 플로우 컨트롤 패킷들을 생성하는 수신 플로우 컨트롤러를 포함한다. 상기 송신 장치는, 상기 수신 장치로 전송될 펜딩 트랜잭션 레이어 패킷들을 저장하는 송신 버퍼, 상기 수신 장치로부터 수신되는 플로우 컨트롤 패킷들에 기초하여 상기 수신 장치로 전송되는 트랜잭션 레이어 패킷의 플로우를 제어하는 송신 플로우 컨트롤러 및 상기 송신 버퍼의 상태 및 상기 송신 플로우 컨트롤러의 상태를 모니터링하여 상기 송신 장치의 내부 클록 신호의 주파수를 제어하는 다이내믹 주파수 컨트롤러를 포함한다.
상기 일 목적을 달성하기 위해, 본 발명의 실시예들에 따른 스토리지 장치는, 피씨아이 익스프레스 (PCIe, Peripheral Component Interconnect Express) 표준에 따른 PCIe 링크를 통하여 호스트 장치와 연결되는 스토리지 장치로서, 데이터를 저장하는 비휘발성 메모리 장치 및 상기 비휘발성 메모리 장치를 제어하는 스토리지 컨트롤러를 포함한다. 상기 스토리지 컨트롤러는, 상기 호스트 장치로 전송될 펜딩 트랜잭션 레이어 패킷들을 저장하는 송신 버퍼, 상기 호스트 장치로부터 수신되는 플로우 컨트롤 패킷들에 기초하여 상기 수신 장치로 전송되는 트랜잭션 레이어 패킷의 플로우를 제어하는 송신 플로우 컨트롤러 및 상기 송신 버퍼의 상태 및 상기 송신 플로우 컨트롤러의 상태를 모니터링하여 상기 스토리지 컨트롤러의 장치의 내부 클록 신호의 주파수를 제어하는 다이내믹 주파수 컨트롤러를 포함한다.
상기 일 목적을 달성하기 위해, 본 발명의 실시예들에 따른 시스템은, 피씨아이 익스프레스 (PCIe, Peripheral Component Interconnect Express) 표준에 따른 PCIe 링크를 통하여 연결되는 제1 장치 및 제2 장치를 포함한다. 상기 제1 장치 및 상기 제2 장치의 각각은, 상기 PCIe 링크를 통하여 전송되는 트랜잭션 레이어 패킷들을 수신하여 저장하는 수신 버퍼, 상기 수신 버퍼의 점유 상태를 모니터링하여 플로우 컨트롤 패킷들을 생성하는 수신 플로우 컨트롤러, 상기 PCIe 링크를 통하여 전송될 펜딩 트랜잭션 레이어 패킷들을 저장하는 송신 버퍼, 상기 PCIe 링크를 통하여 수신되는 플로우 컨트롤 패킷들에 기초하여 상기 PCIe 링크를 통하여 전송되는 트랜잭션 레이어 패킷의 플로우를 제어하는 송신 플로우 컨트롤러 및 상기 송신 버퍼의 상태 및 상기 송신 플로우 컨트롤러의 상태를 모니터링하여 상기 제1 장치 및 상기 제2 장치의 각각의 내부 클록 신호의 주파수를 제어하는 다이내믹 주파수 컨트롤러를 포함한다.
본 발명의 실시예들에 따른 시스템은, 송신 버퍼의 상태 및 송신 플로우 컨트롤러의 상태를 함께 모니터링하여 송신 장치의 내부 클록 신호의 주파수를 제어함으로써, 송신 장치로부터 수신 장치로의 전송 지연을 방지하면서도 송신 장치의 전력 소모를 감소할 수 있다.
본 발명의 실시예들에 따른 스토리지 장치는, 송신 버퍼의 상태 및 송신 플로우 컨트롤러의 상태를 함께 모니터링하여 스토리지 컨트롤러의 내부 클록 신호의 주파수를 제어함으로써 스토리지 장치로부터 호스트 장치로의 전송 지연을 방지하면서도 스토리지 장치의 전력 소모를 감소할 수 있다.
도 1은 본 발명의 실시예들에 따른 시스템을 나타내는 블록도이다.
도 2는 본 발명의 실시예들에 따른 시스템의 동작 제어 방법을 나타내는 순서도이다.
도 3은 본 발명의 실시예들에 따른 인터커넥트 아키텍처를 포함하는 시스템을 나타내는 블록도이다.
도 4 및 5는 본 발명의 실시예들에 따른 시스템에 적용되는 인터커넥트 아키텍쳐의 일 실시예를 나타내는 도면이다.
도 6, 7 및 8은 본 발명의 실시예들에 따른 시스템에 포함되는 송신 장치 및 수신 장치 사이에서 전송되는 패킷들을 나타내는 도면들이다.
도 9는 본 발명의 실시예들에 따른 시스템에 적용되는 PHY-MAC 인터페이스의 일 실시예를 나타내는 도면이다.
도 10, 11 및 12는 본 발명의 실시예들에 따른 시스템의 내부 클록 신호를 이용한 동기화의 일 실시예를 나타내는 도면들이다.
도 13은 피씨아이 익스프레스 (PCIe, Peripheral Component Interconnect Express)를 위한 PHY 인터페이스 (PIPE, PHY Interface for PCI Express) 표준에서 규정된 내부 클록 신호의 주파수를 나타내는 도면이다.
도 14는 본 발명의 실시예들에 따른 시스템의 내부 클록 신호의 복수의 스텝 주파수들의 설정에 대한 일 실시예를 나타내는 도면이다.
도 15는 본 발명의 실시예들에 따른 시스템에서 내부 클록 신호의 주파수를 단계적으로 증가하는 방법의 일 실시예를 나타내는 순서도이다.
도 16은 본 발명의 실시예들에 따른 시스템에서 내부 클록 신호의 주파수를 단계적으로 감소하는 방법의 일 실시예를 나타내는 순서도이다.
도 17a 및 17b는 본 발명의 실시예들에 따른 시스템에서 내부 클록 신호의 주파수를 단계적으로 증가 또는 감소하는 방법의 일 실시예를 나타내는 도면들이다.
도 18은 본 발명의 실시예들에 따른 시스템에서 내부 클록 신호의 주파수를 제어하는 타이밍의 일 실시예를 나타내는 도면이다.
도 19 및 20은 본 발명의 실시예들에 따른 시스템에서 하나 이상의 리타이머를 포함하는 링크들을 나타내는 블록도들이다.
도 21, 22 및 23은 본 발명의 실시예들에 따른 시스템에 의한 전송 지연을 설명하기 위한 도면들이다.
도 24는 본 발명의 실시예들에 따른 스토리지 시스템을 나타내는 블록도이다.
도 25는 본 발명의 실시예들에 따른 스토리지 컨트롤러를 나타내는 블록도이다.
도 26은 도 1의 스토리지 컨트롤러에 포함되는 호스트 인터페이스 및 다이내믹 주파수 컨트롤러를 나타내는 도면이다.
도 27은 본 발명의 실시예들에 따른 스토리지 장치에 포함되는 비휘발성 메모리 장치의 일 실시예를 나타내는 블록도이다.
도 28은 도 27의 비휘발성 메모리 장치에 포함되는 메모리 셀 어레이를 나타내는 블록도이다.
도 29는 도 28의 메모리 셀 어레이에 포함되는 메모리 블록의 등가 회로를 나타내는 회로도이다.
도 30은 본 발명의 실시예들에 따른 시스템을 나타내는 블록도이다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
본 발명의 실시예들에 대한 철저한 이해를 제공하기 위해서, 특정 타입들의 프로세서들 및 시스템 구성들, 특정 하드웨어 구조들, 특정 아키텍처의 세부사항들, 특정 패킷 타입들, 특정 시스템 컴포넌트들, 등의 예들과 같은 다수의 특정 상세가 제시될 수 있다. 그러나, 이러한 구체적인 세부사항들이 본 개시내용에서 논의된 원리들 및 해결책들을 실시하는데 반드시 채택될 필요는 없다는 점이 본 기술 분야의 통상의 기술자에게 명백할 것이다.
이하에서는, 다수의 인터커넥트 패브릭 아키텍처들 중에서 PCI(Peripheral Component Interconnect) 익스프레스(PCIe) 아키텍처에 기초하여 본 발명의 실시예들을 설명하기로 한다. PCIe의 주된 목표는 상이한 벤더들로부터의 컴포넌트들 및 디바이스들이 다수의 마켓 세그먼트; 클라이언트들(데스크톱들 및 모바일), 서버들(표준 및 엔터프라이즈), 및 내장형 및 통신 디바이스들에 걸쳐 있는 개방형 아키텍처에서 연동(inter-operate)할 수 있게 하는 것이다. PCIe는 아주 다양한 미래의 컴퓨팅 및 통신 플랫폼들에 대해 정의된 고성능의 범용 I/O 인터커넥트이다. 그의 사용 모델, 로드-스토어(load-store) 아키텍처, 및 소프트웨어 인터페이스들과 같은, 일부 PCIe 속성들은 그의 개정들(revisions)에 걸쳐 유지된 반면, 이전의 병렬 버스 구현들은 고 확장성의 전체 직렬 인터페이스(fully serial interface)로 교체되었다. PCIe의 더 최신의 버전들은, 새로운 성능 레벨들 및 특징들을 제공하기 위해, 점대점(point-to-point) 인터커넥트들, 스위치 기반 기술, 및 패킷화된 프로토콜에서의 진보들을 이용한다. 전력 관리, QoS(Quality Of Service), 핫 플러그(Hot-Plug)/핫 스왑(Hot-Swap) 지원, 데이터 무결성, 및 에러 처리, 크레딧 기반의 플로우 컨트롤은 PCIe에 의해 지원되는 진보된 특징들 중 일부에 속한다.
과거 PCI 기술에서는 송신 장치가 수신 장치의 수신 버퍼의 상태를 알지 못하였고 수신 버퍼의 가득 참(full)으로 인해 트랜잭션이 중단되면 해당 트랜잭션이 완료될 때까지 재전송(Resend)을 하였고 이에 따라 특정 장치가 시스템 버스를 장기간 점유하는 경우가 생겨 시스템의 심각한 성능 저하를 유발하였다.
그 후 PCIe 기술에서는 트랜잭션 패킷을 보내기 전에 수신 포트의 버퍼 용량을 체크하여 불필요한 통신을 막아 효율성을 높였다. 이때 호스트 장치 및 스토리지 장치와 같은 엔드 포인트 장치(end point device)는 크레딧 기반의 컨트롤 메커니즘을 사용한다. 즉 시스템 초기화 동안에 각각의 수신 포트가 해당 포트의 전체 수신 버퍼 크기를 송신 포트에 전달하고, 이후 수신 포트는 주기적으로 수신 버퍼의 남은 크기(the number of credits)를 송신 포트에 전달하여 수신 버퍼의 점유 상태에 대한 정보를 공유한다.
수신 버퍼의 할당된 크기가 충분하지 않은 경우, 송신 장치(예를 들어, 스토리지 장치)는 트랜잭션 패킷을 보내지 못하고 수신 장치(예를 들어, 호스트 장치)로부터의 플로우 컨트롤 크레딧 업데이트 정보를 기다리기까지 전송 지연이 발생하여 스토리지 장치 및 전체 시스템의 성능이 저하되는 문제점이 발생하게 된다.
장래 PCIe와 같은 인터커넥트 아키텍쳐의 속도 증가에 따라서 호스트 장치의 수신 버퍼의 크기 제약으로 인한 스토리지 장치와 같은 엔드 포인트 장치의 성능저하 현상이 더욱 심화될 것으로 예상된다. 본 발명의 실시예들은, 엔드 포인트 장치의 내부에서 플로우 컨트롤 크레딧 업데이트 로직, 즉 송신 플로우 컨트롤러의 상태를 모니터링하면서 엔드 포인트 장치의 성능 저하 현상을 개선하는 것이다.
도 1은 본 발명의 실시예들에 따른 시스템을 나타내는 블록도이다.
도 1을 참조하면, 시스템(50)은 링크(30)를 통하여 연결되는 제1 장치(DEV1)(10) 및 제2 장치(DEV2)(20)를 포함할 수 있다. 도 1에는 본 발명의 실시예들을 설명하기 위한 구성요소들만을 도시하고 있다. 제1 장치(10) 및 제2 장치는 각각의 구성에 따라서 도 1에 도시되지 않은 다양한 구성 요소들을 더 포함할 수 있다.
제1 장치(10)는 제1 수신기(RX1), 제1 수신 버퍼(RBF1), 제1 수신 플로우 컨트롤러(RFC1), 제1 송신기(TX1), 제1 송신 버퍼(TFB1), 제1 송신 플로우 컨트롤러(TFC1), 제1 다이내믹 주파수 컨트롤러(DFC1) 및 제1 위상 고정 루프(PLL1)를 포함할 수 있다. 제1 수신기(RX1), 제1 수신 버퍼(RBF1) 및 제1 수신 플로우 컨트롤러(RFC1)는 제2 장치(20)로부터 링크(30)를 통하여 전송되는 데이터 및/또는 신호들(이하, 패킷들이라 한다)을 수신하는 수신 블록에 해당하고, 제1 송신기(TX1), 제1 송신 버퍼(TFB1), 제1 송신 플로우 컨트롤러(TFC1) 및 제1 다이내믹 주파수 컨트롤러(DFC1)는 제2 장치(20)로 링크(30)를 통하여 패킷들을 전송하는 송신 블록에 해당한다.
제2 장치(20)는 제2 수신기(RX2), 제2 수신 버퍼(RBF2), 제2 수신 플로우 컨트롤러(RFC2), 제2 송신기(TX2), 제2 송신 버퍼(TFB2), 제2 송신 플로우 컨트롤러(TFC2), 제2 다이내믹 주파수 컨트롤러(DFC2) 및 제2 위상 고정 루프(PLL2)를 포함할 수 있다. 제2 수신기(RX2), 제2 수신 버퍼(RBF2) 및 제2 수신 플로우 컨트롤러(RFC2)는 제1 장치(10)로부터 링크(30)를 통하여 전송되는 패킷들을 수신하는 수신 블록에 해당하고, 제2 송신기(TX2), 제2 송신 버퍼(TFB2), 제2 송신 플로우 컨트롤러(TFC2) 및 제2 다이내믹 주파수 컨트롤러(DFC2)는 제1 장치(10)로 링크(30)를 통하여 패킷들을 전송하는 송신 블록에 해당한다.
일 실시예에서, 제1 장치(10) 및 제2 장치(20)는 피씨아이 익스프레스 (PCIe, Peripheral Component Interconnect Express) 표준에 따른 PCIe 링크(30)를 통하여 연결될 수 있다.
수신 버퍼들(RBF1, RBF2)의 각각은, PCIe 링크(30)를 통하여 전송되는 트랜잭션 레이어 패킷들을 수신하여 저장할 수 있다. 수신 플로우 컨트롤러들(RFC1, RFC2)의 각각은 수신 버퍼들(RBF1, RBF2)의 각각의 점유 상태를 모니터링하여 플로우 컨트롤 패킷들을 생성할 수 있다.
송신 버퍼들(TBF1, TBF2)의 각각은 PCIe 링크(30)를 통하여 전송될 펜딩 트랜잭션 레이어 패킷들을 저장할 수 있다. 송신 플로우 컨트롤러들(TFC1, TFC2)의 각각은 PCIe 링크(30)를 통하여 수신되는 플로우 컨트롤 패킷들에 기초하여 PCIe 링크(30)를 통하여 전송되는 트랜잭션 레이어 패킷의 플로우를 제어할 수 있다. 다이내믹 주파수 컨트롤러들(DFC1, DFC2)의 각각은 송신 버퍼들(TBF1, TBF2)의 각각의 상태 및 송신 플로우 컨트롤러들(TFC1, TFC2)의 각각의 상태를 모니터링하여 제1 장치(10) 및 제2 장치(20)의 내부 클록 신호들(PCLK1, PCLK2)의 주파수를 각각 제어할 수 있다.
도 1에는 제1 장치(10) 및 제2 장치(20)가 양방향 링크(30)를 통하여 연결되고 각각이 수신 블록 및 송신 블록을 포함하여 서로 패킷들을 교환하는 송수신 장치로서 기능하는 실시예가 도시되어 있다.
제2 장치(20)로부터 제1 장치(10)로 패킷들을 전송하는 경우 제1 장치(10)는 수신 장치에 해당하고 제2 장치(20)는 송신 장치에 해당한다. 반대로 제1 장치(10)로부터 제2 장치(20)로 패킷들을 전송하는 경우 제1 장치(10)는 송신 장치에 해당하고 제2 장치(20)는 수신 장치에 해당한다.
실시예들에 따라서, 제1 장치(10) 및 제2 장치(20)는 단방향 링크를 통하여 연결될 수도 있다. 이 경우 제1 장치(10) 및 제2 장치(20) 중 하나는 송신 블록만을 포함하는 송신 장치에 해당하고 다른 하나는 수신 블록만을 포함하는 수신 장치에 해당할 수 있다.
이하에서는 하나의 수신 장치 및 하나의 송신 장치 사이의 관계를 중심으로 본 발명의 실시예들을 설명하지만, 도 1에 도시된 바와 같이, 제1 장치(10) 및 제2 장치(20)가 송수신 장치들로 구현되어 양방향 통신을 수행하는 경우에도 본 발명의 실시예들이 동일한 방식으로 적용됨을 이해할 수 있을 것이다.
도 2는 본 발명의 실시예들에 따른 시스템의 동작 제어 방법을 나타내는 순서도이다.
도 1 및 2를 참조하면, 수신 장치(10 또는 20)의 수신 플로우 컨트롤러(RFC1 또는 RFC2)는 수신 버퍼(RBF1 또는 RBF2)의 점유 상태를 모니터링하여 플로우 컨트롤 패킷들을 생성할 수 있다(S100).
송신 장치(20 또는 10)의 송신 플로우 컨트롤러(TFC2 또는 TFC1)는 수신 장치(10 또는 20)로부터 수신되는 플로우 컨트롤 패킷들에 기초하여 수신 장치(10 또는 20)로 전송되는 트랜잭션 레이어 패킷의 플로우를 제어할 수 있다(S200).
송신 장치(20 또는 10)의 다이내믹 주파수 컨트롤러(DFC2 또는 DFC1)는 수신 장치(10 또는 10)로 전송될 펜딩 트랜잭션 레이어 패킷들을 저장하는 송신 버퍼(TBF2 또는 TBF1)의 상태 및 송신 플로우 컨트롤러(TFC2 또는 TFC1)의 상태를 모니터링하여 송신 장치(20 또는 10)의 내부 클록 신호(PCLK2 또는 PCLK1)의 주파수를 제어할 수 있다(S300).
일 실시예에서, 수신 플로우 컨트롤러(RFC1 또는 RFC2)는 수신 버퍼(RBF1 또는 RBF2)에서 출력되어 내부 회로에 의해 처리되는 트랜잭션 데이터 패킷들의 개수에 상응하는 할당 크레딧(AC)을 생성하고 할당 크레딧(AC)을 포함하는 플로우 컨트롤 패킷들을 생성할 수 있다. 또한, 수신 플로우 컨트롤러(RFC1 또는 RFC2)는 수신 버퍼(RBF1 또는 RBF2)에 입력되어 저장되는 트랜잭션 데이터 패킷들의 개수에 상응하는 수신 크레딧(RC)을 생성할 수 있다. 수신 플로우 컨트롤러(RFC1 또는 RFC2)는 할당 크레딧(AC) 및 수신 크레딧(RC)을 비교하여 에러 발생 여부를 모니터링할 수 있다.
송신 플로우 컨트롤러(TFC2 또는 TFC1)는 플로우 컨트롤 패킷들에 포함되는 할당 크레딧(AC)에 의해 업데이트되는 한계 크레딧(LC) 및 수신 장치(10 또는 20)로 전송된 트랜잭션 레이어 패킷들의 개수에 상응하는 소비 크레딧(CC)를 생성할 수 있다. 송신 플로우 컨트롤러(TFC2 또는 TFC1)는 한계 크레딧(LC) 및 소비 크레딧(CC)의 차이에 기초하여 수신 장치(10 또는 20)의 수신 버퍼(RBF1 또는 RBF2)가 트랜잭션 레이어 패킷을 수신하여 저장할 수 있는 저장 공간이 부족한지 여부를 결정할 수 있다. 송신 플로우 컨트롤러(TFC2 또는 TFC1)는 상기 저장 공간이 부족하다고 결정한 경우 수신 장치(10 또는 20)로의 트랜잭션 레이어 패킷의 전송을 차단할 수 있다.
송신 장치(20 또는 10)의 다이내믹 주파수 컨트롤러(DFC2 또는 DFC1)는 송신 버퍼(TBF2 또는 TBF1)의 상태 및 송신 플로우 컨트롤러(TFC2 또는 TFC1)의 상태를 모니터링하여 송신 장치(20 또는 10)의 내부 클록 신호(PCLK2 또는 PCLK1)의 주파수를 제어할 수 있다. 다이내믹 주파수 컨트롤러(DFC2 또는 DFC1)는 송신 버퍼(TBF2 또는 TBF1)의 상태에 해당하는 한계 크레딧(LC) 및 소비 크레딧(CC)을 모니터링할 수 있다. 또한, 다이내믹 주파수 컨트롤러(DFC2 또는 DFC1)는 송신 플로우 컨트롤러(TFC2 또는 TFC1)의 상태에 해당하는 송신 버퍼(TBF2 또는 TBF1)에 저장된 펜딩 트랜잭션 레이어 패킷들의 개수(NPP)를 모니터링할 수 있다.
다이내믹 주파수 컨트롤러(DFC2 또는 DFC1)는 이와 같은 한계 크레딧(LC), 소비 크레딧(CC) 및 펜딩 트랜잭션 레이어 패킷들의 개수(NPP)에 기초하여 내부 클록 신호(PCLK2 또는 PCLK1)의 주파수를 제어하기 위한 제어 값(PCLK_Rate2 또는 PCLK_Rate1)을 생성할 수 있다. 위상 고정 루프(PLL2 또는 PLL1)는 제어 값(PCLK_Rate2 또는 PCLK_Rate1)에 상응하는 내부 클록 신호(PCLK2 또는 PCLK1)를 생성할 수 있다.
이와 같이, 본 발명의 실시예들에 따른 시스템(50)은, 송신 버퍼(TBF2 또는 TBF1)의 상태 및 송신 플로우 컨트롤러(TFC2 또는 TFC1)의 상태를 함께 모니터링하여 송신 장치(20 또는 10)의 내부 클록 신호(PCLK2 또는 PCLK1)의 주파수를 제어함으로써, 송신 장치(20 또는 10)로부터 수신 장치(10 또는 20)로의 전송 지연을 방지하면서도 송신 장치(20 또는 10)의 전력 소모를 감소할 수 있다.
도 3은 본 발명의 실시예들에 따른 인터커넥트 아키텍처를 포함하는 시스템을 나타내는 블록도이다.
도 3을 참조하면, 한 세트의 컴포넌트들을 상호접속시키는 점대점 링크들로 이루어져 있는 패브릭의 일 실시예가 도시된다. 시스템(300)은 컨트롤러 허브(315)에 결합된 프로세서(305)와 시스템 메모리(310)를 포함한다. 프로세서(305)는 마이크로프로세서, 호스트 프로세서, 내장형 프로세서, 코-프로세서(co-processor), 또는 다른 프로세서와 같은 임의의 프로세싱 요소를 포함한다. 프로세서(305)는 FSB(front-side bus)(306)를 통해 컨트롤러 허브(315)에 결합된다. 일 실시예에서, FSB(306)는 직렬 점대점 인터커넥트이다. 다른 실시예에서, 링크(306)는 상이한 인터커넥트 표준을 준수하는 직렬 차동 인터커넥트 아키텍처(serial, differential interconnect architecture)를 포함한다.
시스템 메모리(310)는 RAM(random access memory), 비휘발성(non-volatile, NV) 메모리, 솔리드 스테이트 메모리 또는 시스템(300)에서의 디바이스들에 의해 액세스가능한 다른 임의의 메모리 디바이스를 포함한다. 시스템 메모리(310)는 메모리 인터페이스(316)를 통해 컨트롤러 허브(315)에 결합된다. 메모리 인터페이스의 예들은 DDR(double-data rate) 메모리 인터페이스, 듀얼 채널(dual-channel) DDR 메모리 인터페이스, 및 동적 RAM(DRAM) 메모리 인터페이스를 포함한다.
일 실시예에서, 컨트롤러 허브(315)는 PCIe 또는 PCIE(Peripheral Component Interconnect Express) 인터커넥트 계층구조에서 루트 허브, 루트 컴플렉스, 또는 루트 컨트롤러이다. 컨트롤러 허브(315)의 예들은 칩셋, MCH(memory controller hub), 노스브리지(northbridge), ICH(interconnect controller hub), 사우스브리지(southbridge), 및 루트 컨트롤러/허브를 포함한다. 종종, 칩셋이라는 용어는 2개의 물리적으로 분리된 컨트롤러 허브, 즉, ICH(interconnect controller hub)에 결합되어 있는 MCH(memory controller hub)를 지칭한다. 컨트롤러(315)는 I/O 디바이스들과 통신한다. 일부 실시예들에서, 피어 대 피어 라우팅(peer-to-peer routing)이 루트 컴플렉스(315)를 통해 선택적으로 지원된다.
여기서, 컨트롤러 허브(315)는 직렬 링크(319)를 통해 스위치/브리지(320)에 결합된다. 인터페이스들/포트들(317 및 321)이라고도 지칭될 수 있는 입력/출력 모듈들(317 및 321)은, 컨트롤러 허브(315)와 스위치(320) 사이에 통신을 제공하기 위해, 계층화된 프로토콜 스택을 포함/구현한다. 일 실시예에서, 스토리지 장치와 같은 다수의 디바이스가 스위치(320)에 결합되어 있을 수 있다.
스위치/브리지(320)는 디바이스(325)로부터의 패킷들/메시지들을 상류로, 즉, 루트 컴플렉스를 향해 계층 구조 위로 - 컨트롤러 허브(315)로 - 라우팅하고, 하류로, 즉, 루트 컨트롤러를 떠나 계층 구조 아래로 - 프로세서(305) 또는 시스템 메모리(310)로부터 디바이스(325)로 - 라우팅한다. 일 실시예에서, 스위치(320)는 다수의 가상 PCI 대 PCI 브리지 디바이스들(virtual PCI-to-PCI bridge devices)의 논리 조립체(logical assembly)로 지칭된다. 디바이스(325)는 I/O 디바이스, NIC(Network Interface Controller, 네트워크 인터페이스 컨트롤러), 애드인 카드(add-in card), 오디오 프로세서, 네트워크 프로세서, 하드 드라이브, 스토리지 장치, CD/DVD ROM, 모니터, 프린터, 마우스, 키보드, 라우터, 휴대용 저장 디바이스, Firewire 디바이스, USB(Universal Serial Bus) 디바이스, 스캐너, 및 다른 입력/출력 디바이스들과 같은, 전자 시스템에 결합될 임의의 내장형 또는 외장형 디바이스 또는 컴포넌트를 포함한다. 종종, PCIe에서, 디바이스와 같은 용어는 엔드포인트를 말한다. 구체적으로 도시되지는 않았지만, 디바이스(325)는 레거시 또는 다른 버전 PCI 디바이스들을 지원하기 위해 PCIe 투 PCI/PCI-X 브리지(PCIe to PCI/PCI-X bridge)를 포함할 수 있다. PCIe에서의 엔드포인트 디바이스들은 종종 레거시, PCIe, 또는 루트 컴플렉스 통합 엔드포인트들로 분류된다.
그래픽 가속기(330)가 또한 직렬 링크(332)를 통해 컨트롤러 허브(315)에 결합된다. 일 실시예에서, 그래픽 가속기(330)는 ICH에 결합된 MCH에 결합된다. 스위치(320), 및 그에 따른 I/O 디바이스(325)는 그 다음에 ICH에 결합된다. I/O 모듈들(331 및 318)은 또한 그래픽 가속기(330)와 컨트롤러 허브(315) 사이에서 통신하기 위해 계층화된 프로토콜 스택을 구현하는 것이다. 이상의 MCH 논의와 유사하게, 그래픽 컨트롤러 또는 그래픽 가속기(330) 자체가 프로세서(305)에 통합될 수 있다. 도 3에 도시된 컴포넌트들 중 하나 이상은 본 명세서에 설명된 특징들 중 하나 이상을 구현하기 위해 논리를 실행, 저장 및/또는 구현할 수 있다.
도 4 및 5는 본 발명의 실시예들에 따른 시스템에 적용되는 인터커넥트 아키텍쳐의 일 실시예를 나타내는 도면이다.
도 4 및 5를 참조하면, 계층화된 프로토콜 스택의 일 실시예가 도시된다. 계층화된 프로토콜 스택은, QPI(Quick Path Interconnect) 스택, PCIe 스택, 차세대 고성능 컴퓨팅 인터커넥트 스택, 또는 다른 계층화된 스택과 같은, 임의의 형태의 계층화된 통신 스택을 포함한다. 본 발명의 실시예들은 PCIe 스택에 기초하여 설명되지만, 동일한 개념들이 다른 인터커넥트 스택들에 적용될 수 있다. 일 실시예에서, 프로토콜 스택은 트랜잭션 계층, 링크 계층, 및 물리 계층을 포함하는 PCIe 프로토콜 스택이다. 도 3에서의 인터페이스들(317, 318, 321, 322, 326, 및 331)과 같은 인터페이스가 통신 프로토콜 스택으로서 표현될 수 있다. 통신 프로토콜 스택으로서의 표현은 또한 프로토콜 스택을 구현/포함하는 모듈 또는 인터페이스로 지칭될 수도 있다.
PCIe는 장치들(또는 컴포넌트들) 사이에서 정보를 통신하기 위해 패킷들을 사용한다. 송신 컴포넌트로부터 수신 컴포넌트로 정보를 전달하기 위해, 패킷들이 트랜잭션 계층 및 데이터 링크 계층에서 형성될 수 있다. 송신된 패킷들이 다른 계층들을 통해 흘러감에 따라, 그들은 그 계층들에서 패킷들을 처리하기 위해 필요한 추가 정보로 확장된다. 수신측에서 반대의 프로세스(reverse process)가 일어나고 패킷들은 이들의 물리 계층 표현에서 데이터 링크 계층 표현으로 그리고 마지막으로 (트랜잭션 계층 패킷들의 경우) 수신 디바이스의 트랜잭션 계층에 의해 처리될 수 있는 형태로 변환된다.
일 실시예에서, 트랜잭션 계층은, 데이터 링크 계층과 물리 계층과 같은, 디바이스의 프로세싱 코어 및 인터커넥트 아키텍처 사이에 인터페이스를 제공하는 것이다. 이러한 점에서, 트랜잭션 계층의 일차적 책임은 패킷들(즉, 트랜잭션 계층 패킷들 또는 TLP들)의 조립과 분해이다. 트랜잭션 계층은 전형적으로 TLP들에 대한 크레딧 기반 흐름 제어(credit-based flow control)를 관리한다. PCIe는 분할 트랜잭션들, 즉 요청과 응답이 시간에 의해 분리된 트랜잭션으로 구현하여, 타겟 디바이스가 응답에 대한 데이터를 수집하는 동안에 링크가 다른 트래픽을 반송할 수 있게 한다.
또한 PCIe는 크레딧 기반 흐름 제어를 이용한다. 이 방식에서, 디바이스는 트랜잭션 계층에서의 수신 버퍼들 각각에 대한 초기 크레딧 양을 광고한다. 도 3에서 컨트롤러 허브(315)와 같이, 링크의 반대쪽 끝에 있는 외부 디바이스는 각각의 TLP에 의해 소비되는 크레딧들의 수를 카운팅한다. 트랜잭션이 한계 크레딧(limit credit)을 초과하지 않으면, 트랜잭션이 송신될 수 있다. 응답을 수신할 시에, 일정량의 크레딧이 복원된다. 크레딧 방식의 이점은, 크레딧 한도에 직면하지 않는다면, 크레딧 반환의 레이턴시가 성능에 영향을 미치지 않는다는 것이다.
일 실시예에서, 트랜잭션 계층은 패킷 헤더/페이로드를 조립한다. 현재 패킷 헤더들/페이로드들에 대한 포맷은 PCIe 사양 웹 사이트에서의 PCIe 사양에서 발견될 수 있다.
데이터 링크 계층이라고도 지칭하는 링크 계층은 트랜잭션 계층과 물리 계층 사이의 중간 스테이지로서 역할을 한다. 일 실시예에서, 데이터 링크 계층의 책임은 링크를 통해 2개의 컴포넌트들(DEV1, DEV2) 사이에서 트랜잭션 계층 패킷들(TLP들)을 교환하기 위한 신뢰할 수 있는 메커니즘을 제공하는 것이다. 데이터 링크 계층의 일 측은 트랜잭션 계층에 의해 조립된 TLP들을 수락하고, 패킷 시퀀스 식별자, 즉, 식별 번호 또는 패킷 번호를 적용하고, 에러 검출 코드, 즉, LCRC를 계산 및 적용하고, 물리 계층을 건너 외부 디바이스로의 송신을 위해 물리 계층에 수정된 TLP들을 제출한다.
일 실시예에서, 물리 계층은 패킷을 외부 디바이스로 물리적으로 송신하기 위해 논리 서브블록 및 전기 서브블록을 포함한다. 여기서, 논리 서브블록은 물리 계층의 "디지털" 기능들을 책임지고 있다. 이와 관련하여, 논리 서브블록은 물리 서브블록에 의한 송신을 위해 송출 정보를 준비하는 송신 섹션, 및 수신된 정보를 링크 계층에 전달하기 전에 그를 식별 및 준비하는 수신 섹션을 포함한다.
물리 블록은 송신기(TX) 및 수신기(RX)를 포함한다. 송신기는 논리 서브블록(221)에 의해 심볼들을 공급받고, 송신기는 이들을 직렬화하여 외부 디바이스로 송신한다. 수신기는 외부 디바이스로부터 직렬화된 심볼들을 공급받고, 수신된 신호들을 비트 스트림으로 변환한다. 비트 스트림은 역직렬화되고 논리 서브블록에 공급된다. 일 실시예에서, 8b/10b 송신 코드가 이용되고, 10-비트 심볼들이 송신/수신된다. 여기서, 프레임들로 패킷을 프레이밍(framing)하기 위해 특정 심볼들이 사용된다. 그에 추가하여, 일 예에서, 수신기는 또한 착신 직렬 스트림으로부터 복원된 심볼 클록을 제공한다.
상술한 바와 같이, 트랜잭션 계층, 링크 계층 및 물리 계층이 PCIe 프로토콜 스택의 특정 실시예에 관하여 논의될지라도, 계층화된 프로토콜 스택이 이에 제한되지 않는다. 실시예들에 따라서, 임의의 계층화된 프로토콜이 포함/구현될 수 있다.
도 6, 7 및 8은 본 발명의 실시예들에 따른 시스템에 포함되는 송신 장치 및 수신 장치 사이에서 전송되는 패킷들을 나타내는 도면들이다.
도 6에는 PCIe 아키텍쳐의 트랜잭션 계층에 의해 생성되고 관리되는 트랜잭션 레이어 패킷(TLP)의 포맷이 도시되어 있다.
트랜잭션은 리퀘스트 및 컴플리션으로 구성되고 패킷들을 사용하여 교신된다. 도 6에 도시된 바와 같이, 트랜잭션 레이어 패킷(TLP)은 복수의 바이트들(BYTE 0~k+3)로 이루어진 선택적인 하나 이상의 TLP 프리픽스들, TLP 헤더, 데이터 페일로드 및 선택적인 다이제스트와 같은 필드들을 포함할 수 있다.
도 7 및 8에는 PCIe 아키텍쳐의 데이터 링크 계층에 의해 생성되고 관리되는 플로우 컨트롤 패킷들이 도시되어 있다. 도 7에는 초기화 플로우 컨트롤 패킷(InitFC)이 도시되어 있고, 도 8에는 업데이트 플로우 컨트롤 패킷(UpdateFC)이 도시되어 있다.
수신 버퍼의 점유 상태에 관한 플로우 컨트롤 정보는 데이터 링크 레이어 패킷(DLLP)의 타입에 해당하는 초기화 플로우 컨트롤 패킷(InitFC) 및 업데이트 플로우 컨트롤 패킷(UpdateFC)을 사용하여 전송된다. 도 7 및 8에 도시된 바와 같이, 초기화 플로우 컨트롤 패킷(InitFC) 및 업데이트 플로우 컨트롤 패킷(UpdateFC)은 크레딧 타입, 버추얼 채널 ID (VCID), 헤더 스케일(HdrScale), 헤더 크레딧(HdrFC), 데이터 스케일(DataScale), 데이터 크레딧(DataFC), 순환 중복 코드(CRC)와 같은 필드들을 포함할 수 있다. 크레딧 타입은 포스트 리퀘스트 타입(P), 논-포스티드 리퀘스트 타입(NP) 및 컴플리션 타입(CPL)을 포함할 수 있다.
호스트 장치 및 스토리지 장치와 같은 PCIe 컴포넌트들은 시스템 초기화 동안 초기화 플로우 컨트롤 패킷(InitFC)을 이용하여 서로의 수신 버퍼의 정보를 교환한다. 스토리지 장치의 측면에서 설명을 하자면, 시스템 초기화 동안 호스트 장치로부터 스토리지 장치가 실장된 해당 포트의 수신 버퍼의 할당된 사이즈에 해당하는 정보를 입수한다. 이후, 스토리지 장치는 호스트 장치로 트랜잭션 레이어 패킷(이하, 트랜잭션 패킷이라 한다)을 보낼 때마다 소비 크레딧(CC, Consumed Credit)를 업데이트한다. 호스트 장치는 자신의 수신 버퍼에서 상위 레이어로 데이터를 전송할 때마다 할당 크레딧(AC, Allocated Credit)를 업데이트한다. 호스트 장치는 업데이트 플로우 컨트롤 패킷(UpdateFC)을 이용하여 할당 크레딧(AC)를 스토리지 장치로 전송하고, 스토리지 장치는 할당 크레딧(AC)에 기초하여 한계 크레딧(LC, Limit Credit)을 업데이트한다. 스토리지 장치는 한계 크레딧(LC) 및 소비 크레딧(CC)의 차이에 기초하여 호스트 장치의 수신 장치의 수신 버퍼가 트랜잭션 레이어 패킷을 수신하여 저장할 수 있는 저장 공간이 부족한지 여부를 결정한다. 상기 저장 공간이 부족하다고 결정한 경우 스토리지 장치는 호스트 장치로의 트랜잭션 레이어 패킷의 전송을 차단한다. 이후, 호스트 장치로부터 전송되는 업데이트 플로우 컨트롤 패킷(UpdateFC)에 의해 한계 크레딧(LC)이 증가하면 스토리지 장치는 송신 버퍼에 저장된 펜딩 트랜잭션 패킷을 호스트 장치로 전송할 수 있다.
도 9는 본 발명의 실시예들에 따른 시스템에 적용되는 PHY-MAC 인터페이스의 일 실시예를 나타내는 도면이다.
도 9에는 본 발명의 실시예들에 따른 장치의 피씨아이 익스프레스 (PCIe, Peripheral Component Interconnect Express)를 위한 PHY 인터페이스 (PIPE, PHY Interface for PCI Express) 표준에 따른 PHY-MAC 인터페이스의 블록도가 도시되어 된다. 도 9에 도시된 바와 같이, 송신 장치 및 수신 장치의 각각은 MAC (Media Access) 계층과 PHY 계층 사이의 인터페이스를 포함한다. 도시된 바와 같이, MAC 계층은 데이터 링크 계층을 포함하는 상위의 계층에 연결되는데 반해, PHY 계층은 예를 들면 송신 및 수신 방향의 채널을 제공하는 물리 인터커넥트에 연결될 수 있다.
MAC 계층과 PHY 계층 사이에서는 다양한 시그널링이 발생한다. 일반적으로, 장치의 내부로부터 송신될 데이터(TXDATA) 및 데이터/제어 신호(TXDATAK)는 가변 길이의 커맨드 신호(COMMAN)와 함께 MAC 계층으로부터 PHY 계층으로 전송된다. PHY 계층은 송신될 데이터(TXDATA)에 상응하는 차동 신호 쌍(TX+, TX-)을 채널로 전송한다. 한편, 외부 장치로부터 입력 데이터에 상응하는 차동 신호 쌍(RX+, RX-)이 수신되면, PHY 계층은 데이터/제어 정보(RXDATAK)와 함께 수신 데이터(RXDATA)로서 MAC 계층으로 전달한다. 또한 가변 길이의 상태 정보(STATUS)가 함께 전달될 수 있다.
MAC 계층 및 PHY 계층 사이의 신호 전송의 동기화를 위하여 내부 클록 신호, 즉 PIPE 클록 신호(PCLK)가 이용될 수 있다. 도 9에는 PIPE 클록 신호(PCLK)가 외부에서 MAC 계층 및 PHY 계층으로 제공되는 것으로 도시되어 있으나, 본 발명의 실시예들이 이에 한정되는 것은 아니다.
도 10, 11 및 12는 본 발명의 실시예들에 따른 시스템의 내부 클록 신호를 이용한 동기화의 일 실시예를 나타내는 도면들이다. 도 10에는 PHY 출력 모드에 해당하는 구성이 도시되어 있고, 도 11에는 PHY 입력 모드에 해당하는 구성이 도시되어 있다.
도 10을 참조하면, PHY 계층에 포함되는 위상 고정 루프(PLL)는 기준 클록 신호(CLK)에 기초하여 PIPE 클록 신호(PCLK) 및 비트율 클록 신호(BRCLK)를 생성할 수 있다. PIPE 클록 신호(PCLK)는 PHY 계층과 MAC 계층과 같은 내부 로직 회로 사이의 신호 전송의 동기화에 이용되고, 비트율 클록 신호(BRCLK)는 송신 장치 및 수신 장치 사이의 전송 속도를 제어한다. 이와 같이 PIPE 클록 신호(PCLK)는 PHY 계층의 내부에서 생성되어 MAC 계층과 같은 내부 로직 회로로 제공될 수 있다.
도 11을 참조하면, PHY 계층에 포함되는 위상 고정 루프(PLLa)는 기준 클록 신호(CLK)에 기초하여 비트율 클록 신호(BRCLK)를 생성하고, PHY 계층의 외부에 배치되는 위상 고정 루프(PLLb)는 기준 클록 신호(CLK)에 기초하여 PIPE 클록 신호(PCLK)를 생성할 수 있다. 이와 같이 PIPE 클록 신호(PCLK)는 PHY 계층의 외부에서 생성되어 PHY 계층 및 MAC 계층과 같은 내부 로직 회로로 제공될 수 있다.
위상 고정 루프(PLL)는 제어 값(PCLK_Rate)에 기초하여 PIPE 클록 신호(PCLK)의 주파수를 조절할 수 있고, 제어 값(RT)에 기초하여 비트율 클록 신호(BRCLK)의 주파수를 조절할 수 있다. 비트율 클록 신호(BRCLK)는 송신 장치 및 수신 장치의 PHY 계층들 사이의 동기화를 위해 시스템 차원에서 제어된다. 반면에 PIPE 클록 신호는 본 발명의 실시예들에 따른 시스템의 송신 장치에 포함되는 다이내믹 주파수 컨트롤러에 의해 제어된다. 송신 장치에 포함되는 다이내믹 주파수 컨트롤러는 비트율 클록 신호(BRCLK)의 주파수에 관계 없이 송신 장치로부터 수신 장치로의 전송 지연이 발생한 경우 송신 장치의 플로우 컨트롤 업데이트 동작의 속도를 증가시키도록 내부 클록 신호, 즉 PIPE 클록 신호(PCLK)의 주파수를 증가시킨다.
도 12를 참조하면, 트랜잭션 계층, 데이터 링크 계층, MAC 계층 및 PHY 계층은 병렬 인터페이스를 통하여 연결되는 하드웨어 블록들로 구현될 수 있다. PIPE 클록 신호(PCLK)는 하드웨어 블록들 사이의 신호 전송의 동기화를 위해 하드웨어 블록들에 제공될 수 있다.
본 발명의 실시예들에 따른 다이내믹 주파수 컨트롤러는 송신 버퍼에 저장된 펜딩 트랜잭션 레이어 패킷들의 개수가 1 이상이고 송신 플로우 컨트롤러가 수신 장치로의 트랜잭션 레이어 패킷의 송신을 차단하는 경우 플로우 지연 상태가 발생한 것으로 결정할 수 있다. 이와 같은 플로우 지연 상태가 발생한 경우 수신 장치로부터 증가된 할당 크레딧(AL)을 포함하는 업데이트 플로우 컨트롤 패킷(UpdateFC)이 수신되더라도 제한 크레딧(LC)의 업데이트되는 소요 시간으로 인해서 펜딩 트랜잭션 패킷의 전송이 지연될 수 있다. PCIe에 따른 플로우 컨트롤은 트랜잭션 계층에 의해 수행되기 때문에 도 12에 도시된 바와 같은 멀티-스테이지 구조에서는 전송 지연이 더욱 심화될 수 있다. 본 발명의 실시예들에 따라서, 플로우 지연 상태가 발생한 경우 PIPE 클록 신호(PCLK)의 주파수를 증가함으로써 전송 지연을 감소시킬 수 있다.
도 13은 피씨아이 익스프레스 (PCIe, Peripheral Component Interconnect Express)를 위한 PHY 인터페이스 (PIPE, PHY Interface for PCI Express) 표준에서 규정된 내부 클록 신호의 주파수를 나타내는 도면이고, 도 14는 본 발명의 실시예들에 따른 시스템의 내부 클록 신호의 복수의 스텝 주파수들의 설정에 대한 일 실시예를 나타내는 도면이다.
도 13에는 PCIe 제1 세대(Gen1)부터 제6 세대(Gen6)에 대하여 페이즈들(Phase1~Phase4)의 각각에 대해 규정된 PIPE 클록 신호의 주파수들이 도시되어 있다. PCIe 의 전송 속도는 초당 기가 전송(GT/s, Giga Transfer per second)로 표시되어 있고, PIPE 클록 신호의 주파수는 메가 헤르츠(MHz, Mega Hertz) 단위로 표시되어 있다.
도 14에는 PCIe 제5 또는 6세대(Gen5 또는 Gen6)에 대하여 내부 클록 신호에 해당하는 PIPE 클록 신호(PCLK)의 주파수를 복수의 스텝 주파수들을 62.5MHz, 125MHz, 250MHz, 500MHz, 1000MHz, 2000MHz, 4000MHz로 설정한 일 실시예가 도시되어 있다. 스텝 주파수들은 시스템의 동작 환경, 준수하는 PICe 사양 등에 따라서 다양한 방식으로 설정될 수 있다.
PIP 클록 신호(PCLK)의 주파수를 제어하기 위한 제어 값(PCLK_Rate)은 복수의 비트들, 예를 들어, 5개의 비트들([4:0])로 표현될 수 있다. 전술한 위상 고정 루프는 제어 값(PCLK_Rate)에 기초하여 상응하는 주파수를 갖는 PIP 클록 신호(PCLK)를 생성하도록 구현될 수 있다. 도 14의 예에서, 제어 값(PCLK_Rate)이 00000인 경우 최소 주파수인 62.5MHz에 해당하고 00111인 경우 최대 주파수인 4000Hz에 해당한다. 이하, 도 14의 스텝 주파수 설정의 예에 기초하여 본 발명의 실시예들을 설명한다.
도 15는 본 발명의 실시예들에 따른 시스템에서 내부 클록 신호의 주파수를 단계적으로 증가하는 방법의 일 실시예를 나타내는 순서도이다.
도 15를 참조하면, 시스템의 파워-온, 링크의 오류 발생 등의 경우 링크에 대한 리셋이 수행될 수 있다(S11).
링크의 리셋이 완료되면 내부 클록 신호(PCLK)의 주파수를 최소 주파수로 초기화할 수 있다(S12). 다시 말해, 제어 값(PCLK_Rate)을 최소 주파수에 상응하는 00000으로 초기화할 수 있다.
다이내믹 주파수 컨트롤러(DFC)는 송신 버퍼(TBF)의 상태 및 송신 플로우 컨트롤러(TFC)의 상태를 모니터링할 수 있다(S13). 일 실시예에서, 다이내믹 주파수 컨트롤러(DFC)는 송신 버퍼(TBF)의 상태에 해당하는 펜딩 트랜잭션 레이어 패킷들의 개수(NPP) 및 송신 플로우 컨트롤러(TFC)의 상태에 해당하는 제한 크레딧(LC)과 소비 크레딧(CC)을 모니터링할 수 있다.
펜딩 트랜잭션 레이어 패킷들의 개수(NPP)가 0인 경우(S14: YES), 즉 송신 버퍼(TBF)에 펜딩 트랜잭션 레이어 패킷이 존재하지 않는 경우, 다이내믹 주파수 컨트롤러(DFC)는 제1 주기(tPD1)만큼 대기한(S15) 후에 다시 송신 버퍼(TBF)의 상태 및 송신 플로우 컨트롤러(TFC)의 상태를 모니터링할 수 있다(S13).
펜딩 트랜잭션 레이어 패킷들의 개수(NPP)가 0이 아니고(S14: NO), 한계 크레딧(LC) 및 소비 크레딧(CC)의 차이(LC-CC)가 기준 크레딧(CR)보다 작지 않은 경우(S16: NO), 다이내믹 주파수 컨트롤러(DFC)는 제1 주기(tPD1)만큼 대기한(S15) 후에 다시 송신 버퍼(TBF)의 상태 및 송신 플로우 컨트롤러(TFC)의 상태를 모니터링할 수 있다(S13).
펜딩 트랜잭션 레이어 패킷들의 개수(NPP)가 0이 아니고(S14: NO), 한계 크레딧(LC) 및 소비 크레딧(CC)의 차이(LC-CC)가 기준 크레딧(CR)보다 작은 경우(S16: YES), 다이내믹 주파수 컨트롤러(DFC)는 플로우 지연 상태가 발생한 것으로 결정할 수 있다. 다이내믹 주파수 컨트롤러(DFC)는 플로우 지연 상태가 발생하고, 현재의 제어 값(PCLK_Rate)이 최대 주파수에 상응하는 00111 이 아닌 경우(S17: NO), 제어 값(PCLK_Rate)을 1만큼 증가시킬 수 있다(S18), 다시 말해, 다이내믹 주파수 컨트롤러(DFC)는 플로우 지연 상태가 발생한 경우 내부 클록 신호(PCLK)의 주파수를 한 단계 증가할 수 있다. 다이내믹 주파수 컨트롤러(DFC)는 제1 주기(tPD1)만큼 대기한(S15) 후에 다시 송신 버퍼(TBF)의 상태 및 송신 플로우 컨트롤러(TFC)의 상태를 모니터링할 수 있다(S13).
이와 같이, 다이내믹 주파수 컨트롤러(DFC)는 제1 주기(tPD1)에 의해 주기적으로 플로우 지연 상태의 발생 여부를 결정하고, 내부 클록 신호(PCLK)의 주파수가 최대 주파수가 될 때까지(S17: YES), 내부 클록 신호(PCLK)의 주파수를 한 단계씩 단계적으로 증가시킬 수 있다. 내부 클록 신호(PCLK)의 주파수가 최대 주파수에 도달한 이후에는 링크가 리셋되기 전까지 내부 클록 신호(PCLK)의 주파수는 최대 주파수로 유지될 수 있다.
도 16은 본 발명의 실시예들에 따른 시스템에서 내부 클록 신호의 주파수를 단계적으로 감소하는 방법의 일 실시예를 나타내는 순서도이다.
도 16을 참조하면, 다이내믹 주파수 컨트롤러(DFC)는 송신 버퍼(TBF)의 상태 및 송신 플로우 컨트롤러(TFC)의 상태를 모니터링할 수 있다(S31). 일 실시예에서, 다이내믹 주파수 컨트롤러(DFC)는 송신 버퍼(TBF)의 상태에 해당하는 펜딩 트랜잭션 레이어 패킷들의 개수(NPP) 및 송신 플로우 컨트롤러(TFC)의 상태에 해당하는 제한 크레딧(LC)과 소비 크레딧(CC)을 모니터링할 수 있다.
펜딩 트랜잭션 레이어 패킷들의 개수(NPP)가 기준 개수(NR)보다 작지 않은 경우(S32: YES), 다이내믹 주파수 컨트롤러(DFC)는 제2 주기(tPD2)만큼 대기한(S33) 후에 다시 송신 버퍼(TBF)의 상태 및 송신 플로우 컨트롤러(TFC)의 상태를 모니터링할 수 있다(S31).
펜딩 트랜잭션 레이어 패킷들의 개수(NPP)가 기준 개수(NR)보다 작고(S32: YES), 한계 크레딧(LC) 및 소비 크레딧(CC)의 차이(LC-CC)가 기준 크레딧(CR)보다 작은 경우(S34: YES), 다이내믹 주파수 컨트롤러(DFC)는 제2 주기(tPD2)만큼 대기한(S33) 후에 다시 송신 버퍼(TBF)의 상태 및 송신 플로우 컨트롤러(TFC)의 상태를 모니터링할 수 있다(S31).
펜딩 트랜잭션 레이어 패킷들의 개수(NPP)가 기준 개수(NR)보다 작고(S32: YES), 한계 크레딧(LC) 및 소비 크레딧(CC)의 차이(LC-CC)가 기준 크레딧(CR)보다 작지 않은 경우(S34: NO), 다이내믹 주파수 컨트롤러(DFC)는 플로우 원활 상태가 발생한 것으로 결정할 수 있다. 다이내믹 주파수 컨트롤러(DFC)는 플로우 원활 상태가 발생하고, 현재의 제어 값(PCLK_Rate)이 최소 주파수에 상응하는 00000 이 아닌 경우(S35: NO), 제어 값(PCLK_Rate)을 1만큼 감소시킬 수 있다(S36), 다시 말해, 다이내믹 주파수 컨트롤러(DFC)는 플로우 원활 상태가 발생한 경우 내부 클록 신호(PCLK)의 주파수를 한 단계 감소할 수 있다. 다이내믹 주파수 컨트롤러(DFC)는 제2 주기(tPD2)만큼 대기한(S33) 후에 다시 송신 버퍼(TBF)의 상태 및 송신 플로우 컨트롤러(TFC)의 상태를 모니터링할 수 있다(S31).
이와 같이, 다이내믹 주파수 컨트롤러(DFC)는 제2 주기(tPD2)에 의해 주기적으로 플로우 원활 상태의 발생 여부를 결정하고, 내부 클록 신호(PCLK)의 주파수가 최소 주파수가 될 때까지(S35: YES), 내부 클록 신호(PCLK)의 주파수를 한 단계씩 단계적으로 감소시킬 수 있다. 내부 클록 신호(PCLK)의 주파수가 최소 주파수에 해당하는 경우(S35: YES), 다이내믹 주파수 컨트롤러(DFC)는 제2 주기(tPD2)만큼 대기한(S33) 후에 다시 송신 버퍼(TBF)의 상태 및 송신 플로우 컨트롤러(TFC)의 상태를 모니터링할 수 있다(S31).
도 17a 및 17b는 본 발명의 실시예들에 따른 시스템에서 내부 클록 신호의 주파수를 단계적으로 증가 또는 감소하는 방법의 일 실시예를 나타내는 도면들이다.
도 17a 및 17b를 참조하면, 다이내믹 주파수 컨트롤러(DFC)는 송신 버퍼(TBF)의 상태 및 송신 플로우 컨트롤러(TFC)의 상태를 모니터링할 수 있다(S51). 일 실시예에서, 다이내믹 주파수 컨트롤러(DFC)는 송신 버퍼(TBF)의 상태에 해당하는 펜딩 트랜잭션 레이어 패킷들의 개수(NPP) 및 송신 플로우 컨트롤러(TFC)의 상태에 해당하는 제한 크레딧(LC)과 소비 크레딧(CC)을 모니터링할 수 있다.
한계 크레딧(LC) 및 소비 크레딧(CC)의 차이(LC-CC)가 제1 기준 크레딧(CR1)보다 작지 않은 경우(S52: NO), 다이내믹 주파수 컨트롤러(DFC)는 제1 주기(tPD1)만큼 대기한(S53) 후에 다시 송신 버퍼(TBF)의 상태 및 송신 플로우 컨트롤러(TFC)의 상태를 모니터링할 수 있다(S51).
한계 크레딧(LC) 및 소비 크레딧(CC)의 차이(LC-CC)가 제1 기준 크레딧(CR1)보다 작은 경우(S52: YES), 다이내믹 주파수 컨트롤러(DFC)는 플로우 지연 상태가 발생한 것으로 결정할 수 있다. 다이내믹 주파수 컨트롤러(DFC)는 플로우 지연 상태가 발생하고, 현재의 제어 값(PCLK_Rate)이 최대 주파수에 상응하는 00111 이 아닌 경우(S54: NO), 제어 값(PCLK_Rate)을 1만큼 증가시킬 수 있다(S55), 다시 말해, 다이내믹 주파수 컨트롤러(DFC)는 플로우 지연 상태가 발생한 경우 내부 클록 신호(PCLK)의 주파수를 한 단계 증가할 수 있다. 다이내믹 주파수 컨트롤러(DFC)는 제1 주기(tPD1)만큼 대기한(S53) 후에 다시 송신 버퍼(TBF)의 상태 및 송신 플로우 컨트롤러(TFC)의 상태를 모니터링할 수 있다(S51).
한계 크레딧(LC) 및 소비 크레딧(CC)의 차이(LC-CC)가 제2 기준 크레딧(CR2)보다 크지 않은 경우(S56: NO), 다이내믹 주파수 컨트롤러(DFC)는 제2 주기(tPD2)만큼 대기한(S57) 후에 다시 송신 버퍼(TBF)의 상태 및 송신 플로우 컨트롤러(TFC)의 상태를 모니터링할 수 있다(S51). 도 17b에 도시된 바와 같이, 제2 기준 크레딧(CR2)는 제1 기준 크레딧(CR1)보다 크게 설정될 수 있다.
한계 크레딧(LC) 및 소비 크레딧(CC)의 차이(LC-CC)가 제2 기준 크레딧(CR2)보다 큰 경우(S56: YES), 다이내믹 주파수 컨트롤러(DFC)는 플로우 원활 상태가 발생한 것으로 결정할 수 있다. 다이내믹 주파수 컨트롤러(DFC)는 플로우 원활 상태가 발생하고, 현재의 제어 값(PCLK_Rate)이 최소 주파수에 상응하는 00000 이 아닌 경우(S58: NO), 제어 값(PCLK_Rate)을 1만큼 감소시킬 수 있다(S59), 다시 말해, 다이내믹 주파수 컨트롤러(DFC)는 플로우 원활 상태가 발생한 경우 내부 클록 신호(PCLK)의 주파수를 한 단계 감소할 수 있다. 다이내믹 주파수 컨트롤러(DFC)는 제2 주기(tPD2)만큼 대기한(S57) 후에 다시 송신 버퍼(TBF)의 상태 및 송신 플로우 컨트롤러(TFC)의 상태를 모니터링할 수 있다(S51).
이와 같이, 다이내믹 주파수 컨트롤러(DFC)는, 한계 크레딧(LC) 및 소비 크레딧(CC)의 차이(LC-CC)가 제1 기준 크레딧(CR1)보다 작은 경우 내부 클록 신호(PCLK)의 주파수를 증가하고, 한계 크레딧(LC) 및 소비 크레딧(CC)의 차이(LC-CC)가 제2 기준 크레딧(CR2)보다 큰 경우 내부 클록 신호(PCLK)의 주파수를 감소할 수 있다. 한계 크레딧(LC) 및 소비 크레딧(CC)의 차이(LC-CC)가 제1 기준 크레딧(CR1)과 제2 기준 크레딧(CR2) 사이에 해당하는 경우에는 현재의 주파수를 유지할 수 있다.
도 18은 본 발명의 실시예들에 따른 시스템에서 내부 클록 신호의 주파수를 제어하는 타이밍의 일 실시예를 나타내는 도면이다.
도 18에는 내부 클록 신호(PCLK)의 주파수 증가 타이밍이 빈 사각형들로 표시되어 있고, 주파수 감소 타이밍이 빗금친 사각형들로 도시되어 있다. 도 18에 도시된 바와 같이, 다이내믹 주파수 컨트롤러(DFC)는 제1 주기(tPD1)에 의해 주기적으로 내부 클록 신호의 주파수를 증가시킬지 여부를 결정하고, 제1 주기(tPD1)보다 긴 제2 주기(tPD2)에 의해 주기적으로 내부 클록 신호(PCLK)의 주파수를 증가시킬지 여부를 결정할 수 있다.
제1 주기(tPD1)를 짧게 할수록 송신 장치의 성능은 향상될 수 있지만 소모 전력이 감소한다. 한편, 제2 주기(tPD2)를 짧게 할수록 송신 장치의 소모 전력은 감소될 수 있지만 성능은 저하될 수 있다. 제1 주기(tPD1)를 제2 주기(tPD2)보다 짧게 함으로써 소모 전력의 감소보다는 성능의 향상을 우선적으로 도모할 수 있다.
도 19 및 20은 본 발명의 실시예들에 따른 시스템에서 하나 이상의 리타이머를 포함하는 링크들을 나타내는 블록도들이다.
도 19에 도시된 바와 같이, 여러 리타이머(515a, 515b)가 링크(530a)를 연장하기 위해 활용될 수 있다. 세 개의 서브링크(520a-c)가 두 개의 리타이머(515a, 515b)를 통해 정의될 수 있는데, 이때 제 1 서브링크(515a)는 제 1 컴포넌트(505)(예를 들면, 업스트림 컴포넌트)를 제 1 리타이머(515a)에 접속하고, 제 2 서브링크는 제 1 리타이머(515a)를 제 2 리타이머(515b)에 접속하며, 제 3 서브링크(515c)는 제 2 리타이머(515b)를 제 2 컴포넌트(510)(예를 들면, 다운스트림 컴포넌트)에 접속한다.
도 20에 도시된 바와 같이, 제 1 컴포넌트(505)(예를 들면, 업스트림 컴포넌트)를 제 2 컴포넌트(510)(예를 들면, 다운스트림 컴포넌트)에 접속하는 링크(530b)는 단일의 리타이머(515a)를 포함할 수 있다. 제 1 서브링크(520a)는 제 1 컴포넌트(505)를 리타이머(515a)에 접속할 수 있고 제 2 서브링크(520b)는 리타이머(515a)를 제 2 컴포넌트에 접속할 수 있다.
도 19 및 20의 예에서 도시된 바와 같이, 리타이머는 두 개의 슈도 포트(pseudo port)를 포함할 수 있고, 슈도 포트는 각자의 다운스트림 방향 및 업스트림 방향을 동적으로 결정할 수 있다. 각각의 리타이머(515a, 515b)는 업스트림 경로(541) 및 다운스트림 경로(542)를 가질 수 있다. 또한, 리타이머(515a, 515b)는 포워딩 모드 및 실행 모드를 비롯한 동작 모드를 지원할 수 있다. 일부 사례에서 리타이머(515a, 515b)는 서브링크를 통해 수신된 데이터를 디코딩하며 다른 서브링크를 통해 다운스트림으로 포워딩될 데이터를 다시 인코딩할 수 있다. 일부 사례에서, 리타이머는 예를 들면 정렬된 세트 데이터를 처리하고 포워딩할 때 수신한 데이터에서 일부 값을 수정할 수 있다. 또한, 리타이머는 잠재적으로 PCIe와 같은 사양으로 정의된 한 세트의 폭 옵션과 같은 임의의 폭 옵션을 그의 최대 폭으로서 지원할 수 있다.
도 21, 22 및 23은 본 발명의 실시예들에 따른 시스템에 의한 전송 지연을 설명하기 위한 도면들이다.
도 21, 22 및 23을 참조하면, 호스트 장치는 수신 장치에 해당하고 스토리지 장치는 송신 장치에 해당할 수 있다. 예를 들어, 호스트 장치는 3824B(byte)의 수신 버퍼(RBF)를 포함하고, 스토리지 장치는 512B의 데이터 페일로드를 포함하는 트랜잭션 패킷들을 호스트 장치로 전송할 수 있다. 다시 말해, 수신 버퍼(RBF)는 스토리지 장치로부터 전송되는 트랜잭션 패킬들을 최대 7개까지 저장할 수 있다.
수신 버퍼(RBF)에 스토리지 장치로부터 전송된 7개의 트랜잭션 패킷들이 가득차 있는 경우 PCIe 플로우 컨트롤에 따라서 스토리지 장치는 호스트 장치로 8번째 트랜잭션 패킷을 보낼 수가 없는 상황이 발생하고, 호스트 장치로부터 업데이트 플로우 컨트롤 패킷(UpdateFC)을 통하여 크레딧이 업데이트 되었다는 정보를 수신한 이후 8번째 트랜잭션 패킷을 보낼 수가 있게 된다. 이렇게 8번째 트랜잭션 패킷을 보내지 못하고 호스트 장치로부터 플로우 컨트롤 업데이트 정보를 기다리기까지 스토리지 장치의 레이턴시(latency)가 길어져서 스토리지 장치의 성능이 저하되는 문제점이 발생하게 된다.
도 21은 스토리지 장치의 내부 클록 신호(PCLK)의 주파수가 250MHz이고 호스트 장치 및 스토리지 장치 사이에 리타이머를 포함하지 않는 경우에 해당한다. 도 22는 스토리지 장치의 내부 클록 신호(PCLK)의 주파수가 250MHz이고 호스트 장치 및 스토리지 장치 사이에 리타이머를 포함하는 경우에 해당한다. 도 23은 스토리지 장치의 내부 클록 신호(PCLK)의 주파수가 1000MHz이고 호스트 장치 및 스토리지 장치 사이에 리타이머를 포함하는 경우에 해당한다.
일반적인 스토리지 시스템의 경우 호스트 장치와 스토리지 장치 사이에 중간 매개체가 존재하지 않으나, 최근 PCIe 세대(Generation) 개선에 따른 PCIe 속도 증가로 인해 신호 무결성(Signal Integrity) 열화 현상이 발생하게 되었고, 이에 따라 도 19 및 20을 참조하여 설명한 바와 같은 리타이머라는 신호를 보상해주는 IC가 호스트 장치 및 스토리지 장치 사이에 필요하게 되었다.
도 21과 같이 리타이머가 없는 노말 조건인 환경에서는 내부 클록 신호(PCLK)의 주파수가 250MHz인 경우에도 8번째 패킷을 보내기 전에 스토리지 장치는 업데이트 플로우 컨트롤 패킷(UpdateFC)를 처리하여 8번째 패킷을 지연 없이 전송할 수 있다. 반면에, 도 22와 같이 리타이머를 포함하는 환경에서는 리타이머의 존재로 인해 전송 지연이 발생하게 되고 스토리지 장치의 성능이 크게 저하될 수 있다. 도 23의 경우와 같이 내부 클록 신호(PCLK)의 주파수를 1000MHz로 증가시키면 전송 지연이 해소될 수 있다.
내부 클록 신호(PCLK)의 주파수를 최대 주파수로 고정시키는 경우에는 전송 지연이 최대한 방지될 수 있지만 스토리지 장치의 소모 전력이 크게 증가한다.
전술한 바와 같이 본 발명의 실시예들에 따라서, 송신 버퍼의 상태 및 송신 플로우 컨트롤러의 상태를 함께 모니터링하여 송신 장치의 내부 클록 신호의 주파수를 제어함으로써, 송신 장치로부터 수신 장치로의 전송 지연을 방지하면서도 송신 장치의 전력 소모를 감소할 수 있다.
도 24는 본 발명의 실시예들에 따른 스토리지 시스템을 나타내는 블록도이다.
도 24를 참조하면, 스토리지 시스템(1000)은 호스트 장치(1100), 스토리지 장치(1200) 및 이를 연결하는 링크(30)를 포함할 수 있다. 호스트 장치(1100)는 수신 버퍼(RBF) 및 수신 플로우 컨트롤러(RFC)를 포함할 수 있다. 스토리지 장치(1200)는 스토리지 컨트롤러(100) 및 비휘발성 메모리 장치(400)를 포함할 수 있다. 스토리지 컨트롤러(100)는 송신 버퍼(TBF), 송신 플로우 컨트롤러(TFC) 및 다이내믹 주파수 컨트롤러(DFC)(DFC)를 포함할 수 있다. 예를 들어, 스토리지 장치(1200)는 솔리드 스테이트 드라이브(SSD, Solid State Drive), 임베디드 멀티미디어 카드(eMMC, embedded multimedia card), 유니버셜 플래시 스토리지(UFS, universal flash storage) 장치 등일 수 있다. 일 실시예에서 링크(30)는 PCIe 링크일 수 있다.
호스트 장치(1100)는 씨피유(CPU, central processing unit), 프로세서, 마이크로프로세서 (microprocessor) 또는 애플리케이션 프로세서(application processor) 등과 같이 데이터를 처리할 수 있는 데이터 처리 장치일 수 있다. 스토리지 장치(1200)는 호스트 장치(1100)와 함께 전자 장치에 내장(embedded)될 수 있고, 탈부착 방식으로 호스트 장치(1100)를 포함하는 전자 장치에 전기적으로 연결될 수도 있다.
호스트 장치(1100)는 스토리지 컨트롤러(100)에 데이터 동작 요청, 즉 리퀘스트(REQ) 및 어드레스(ADDR)를 전송할 수 있으며, 스토리지 컨트롤러(100)와 데이터(DTA)를 주고 받을 수 있다. 스토리지 컨트롤러(100)는 호스트 장치(1100)에 데이터 동작 요청(REQ)에 대한 응답(RSND)을 전송할 수 있다. 데이터 동작 요청(REQ)은 데이터 독출 요청, 데이터 기입 요청 및 소거 요청 등을 포함할 수 있다. 즉, 데이터 동작은 독출 동작, 기입 동작 및 소거 동작 등을 포함할 수 있다.
스토리지 컨트롤러(100)는 호스트 장치(1100)의 리퀘스트(REQ)에 응답하여 비휘발성 메모리 장치(400)를 제어할 수 있다. 스토리지 컨트롤러(100)는 비휘발성 메모리 장치(400)에 어드레스(ADDR), 커맨드(CMD) 및 제어 신호(CTRL) 등을 제공함으로써, 비휘발성 메모리 장치(400)에 대한 독출 동작, 기입 동작 및 소거 동작을 수행할 수 있다. 기입 동작은 프로그램 동작이라 부를 수 있다.
예를 들어, 스토리지 컨트롤러(100)는 호스트 장치(1100)로부터 수신한 데이터 독출 요청에 응답하여 비휘발성 메모리 장치(400)에 저장된 데이터(DTA)를 독출하거나, 호스트 장치(1100)로부터 수신한 데이터 기입 요청에 응답하여 비휘발성 메모리 장치(400)에 대한 데이터(DTA)를 기입하도록 비휘발성 메모리 장치(400)를 제어할 수 있다. 또한, 호스트 장치(1100)로부터 수신한 소거 요청에 응답하여 비휘발성 메모리 장치(400)에 저장된 데이터(DTA)를 소거하도록 비휘발성 메모리 장치(400)를 제어할 수 있다. 비휘발성 메모리 장치(400)는 스토리지 컨트롤러(100)에 코맨드(CMD)에 대한 응답(RSND)을 전송할 수 있다.
비휘발성 메모리 장치(400)는 플래시(flash) 메모리, MRAM(Magnetic RAM), FeRAM(Ferroelectric RAM), PRAM(Phase change RAM) 및 ReRAM(Resistive RAM) 등과 같은 하나 이상의 비휘발성 메모리들(NVM)로 구현될 수 있다. 비휘발성 메모리 장치(400)는 복수의 채널들을 통하여 스토리지 컨트롤러(100)에 연결될 수 있다. 이하에서는, 설명의 편의상 비휘발성 메모리 장치(400)는 낸드(NAND) 플래시 메모리 장치로 예시하여 설명될 수 있다.
도 25는 본 발명의 실시예들에 따른 스토리지 컨트롤러를 나타내는 블록도이고, 도 26은 도 25의 스토리지 컨트롤러에 포함되는 호스트 인터페이스 및 다이내믹 주파수 컨트롤러를 나타내는 도면이다.
도 25를 참조하면, 스토리지 컨트롤러(100)는 프로세서(110), 버퍼 메모리(BUFF)(140), 다이내믹 주파수 컨트롤러(DFC)(200), 호스트 인터페이스(HOST INTERFACE 151)(120), ECC(Error Correction Code) 엔진(170), 메모리 인터페이스(MIF)(150), AES(Advanced Encryption Standard) 엔진(180) 및 이들을 전기적으로 연결하는 내부 버스(160)를 포함할 수 있다.
프로세서(110)는 호스트 장치(예를 들어, 도 24의 1100)로부터 호스트 인터페이스(120)를 통하여 수신된 코맨드에 응답하여 스토리지 컨트롤러(100)의 동작을 제어할 수 있다. 예를 들어, 프로세서(110)는 스토리지 장치(예를 들어, 도 24의 1200)의 동작을 제어하며, 스토리지 장치(1200)를 구동하기 위한 펌웨어(Firmware)를 채용하여 각각의 구성들을 제어할 수 있다.
버퍼 메모리(140)는 프로세서(110)에 의해 실행 및 처리되는 명령어 및 데이터를 저장할 수 있다. 예를 들어, 버퍼 메모리(140)는 SRAM, DRAM 등과 같은 휘발성 메모리로 구현될 수 있다.
에러 정정을 위한 ECC 엔진(170)은 BCH(Bose-Chaudhuri-Hocquenghem) 코드, LDPC(Low Density Parity Check) 코드, 터보 코드(Turbo Code), 리드-솔로몬 코드(Reed-Solomon Code), 콘볼루션 코드(Convolution Code), RSC(Recursive Systematic Code), TCM(Trellis-Coded Modulation), BCM(Block Coded Modulation) 등의 부호화된 변조(Coded Modulation), 또는 다른 에러 정정 코드를 이용하여 ECC 인코딩 및 ECC 디코딩을 수행할 수 있다.
호스트 인터페이스(120)는 호스트 장치(1100)와 스토리지 컨트롤러(100) 사이의 물리적 연결을 제공할 수 있다. 즉, 호스트 인터페이스(120)는 호스트 장치(1100)의 버스 포맷(bus format)에 대응하여 스토리지 컨트롤러(100)와의 인터페이싱을 제공할 수 있다. 일 실시예에서, 호스트 장치(1100)의 버스 포맷은 SCSI 또는 SAS일 수 있다. 다른 실시예에서, 호스트 장치(200)의 버스 포맷은 USB, PCIe(peripheral component interconnect express), ATA, PATA, SATA, NVMe 등일 수 있다.
메모리 인터페이스(150)는 비휘발성 메모리 장치(예를 들어, 도 2의 400)와 데이터를 교환할 수 있다. 메모리 인터페이스(150)는 데이터를 비휘발성 메모리 장치(400)에 전송할 수 있고, 비휘발성 메모리 장치(400)로부터 독출된 데이터를 수신할 수 있다. 예를 들어, 메모리 인터페이스(150)는 토글(Toggle) 혹은 온파이(ONFI)와 같은 표준 규약을 준수하도록 구현될 수 있다.
AES 엔진(180)은 스토리지 컨트롤러(100)로 입력되는 데이터에 대한 암호화(encryption) 동작과 복호화(decryption) 동작 중 적어도 하나를, 대칭 키 알고리즘(symmetric-key algorithm)을 이용하여 수행할 수 있다. 상세하게 도시하지는 않았으나, AES 엔진(180)은 암호화 모듈 및 복호화 모듈을 포함할 수 있다. 실시예에 따라서, 상기 암호화 모듈 및 상기 복호화 모듈은 서로 별개의 모듈로 구현될 수도 있고 하나의 모듈로 구현될 수도 있다.
도 24, 25 및 26을 참조하면, 호스트 인터페이스(120)는 송신 버퍼(TBF), 송신 플로우 컨트롤러(TFC) 및 위상 고정 루프(PLL)를 포함할 수 있다.
송신 버퍼(TBF)는 호스트 장치(1100)로 전송될 펜딩 트랜잭션 레이어 패킷들을 저장한다. 송신 플로우 컨트롤러(TFC)는 호스트 장치(1100)로부터 수신되는 플로우 컨트롤 패킷들(InitFC, UpdateFC)에 기초하여 호스트 장치(1100)로 전송되는 트랜잭션 레이어 패킷의 플로우를 제어한다.
다이내믹 주파수 컨트롤러(DFC)는 송신 버퍼(TBF)의 상태 및 송신 플로우 컨트롤러(TFC)의 상태를 모니터링하여 스토리지 컨트롤러(100)의 내부 클록 신호(PCLK)의 주파수를 제어한다.
일 실시예에서, 다이내믹 주파수 컨트롤러(DFC)는 송신 버퍼(TBF)의 상태에 해당하는 펜딩 트랜잭션 레이어 패킷들의 개수(NPP) 및 송신 플로우 컨트롤러(TFC)의 상태에 해당하는 제한 크레딧(LC)과 소비 크레딧(CC)을 모니터링할 수 있다. 다이내믹 주파수 컨트롤러(DFC)는 전술한 바와 도 14 내지 18을 참조하여 설명한 바와 같이 제어 값(PCLK_Rate)을 순차적으로 1만큼씩 증가 및/또는 감소할 수 있다. 위상 고정 루프(PLL)는 도 14에 예시한 바와 같이 제어 값(PCLK_Rate)에 상응하는 내부 클록 신호(PCLK)를 생성할 수 있다.
도 27은 본 발명의 실시예들에 따른 스토리지 장치에 포함되는 비휘발성 메모리 장치의 일 실시예를 나타내는 블록도이다.
도 27을 참조하면, 비휘발성 메모리 장치(800)는 메모리 셀 어레이(500), 어드레스 디코더(530), 페이지 버퍼 회로(510), 데이터 입출력 회로(520), 제어 회로(550) 및 전압 생성기(560)를 포함할 수 있다. 일 실시예에서, 비휘발성 메모리 장치(400)(800)는 주변 회로가 형성되는 주변 영역(PREG) 위에 메모리 셀 어레이가 형성되는 COP(Cell Over Periphery) 구조를 가질 수 있다. 이 때, 메모리 셀 어레이(500)는 셀 영역(CREG)에 형성되고, 어드레스 디코더(530), 페이지 버퍼 회로(510), 데이터 입출력 회로(520), 제어 회로(550) 및 전압 생성기(560)는 주변 회로 영역(PREG)에 형성될 수 있다.
메모리 셀 어레이(500)는 복수의 스트링 선택 라인들(SSL), 복수의 워드 라인들(WL) 및 복수의 접지 선택 라인(GSL)을 통해 어드레스 디코더(530)와 연결될 수 있다. 또한, 메모리 셀 어레이(500)는 복수의 비트 라인들(BL)을 통해 페이지 버퍼 회로(510)와 연결될 수 있다. 메모리 셀 어레이(500)는 복수의 워드 라인들(WL) 및 복수의 비트 라인들(BL)에 연결되는 복수의 메모리 셀들을 포함할 수 있다.
일 실시예에 있어서, 메모리 셀 어레이(500)는 기판 상에 삼차원 구조(또는 수직 구조)로 형성되는 삼차원(three dimensional) 메모리 셀 어레이일 수 있다. 이 경우, 메모리 셀 어레이(500)는 서로 적층되어 형성되는 복수의 메모리 셀들을 포함하는 셀 스트링들, 예를 들어, 수직 메모리 낸드 스트링들을 포함할 수 있다.
제어 회로(550)는 외부의 메모리 컨트롤러로부터 커맨드 신호(CMD) 및 어드레스 신호(ADDR)를 수신하고, 커맨드 신호(CMD) 및 어드레스 신호(ADDR)에 기초하여 비휘발성 메모리 장치(10)의 소거 루프, 프로그램 루프 및 독출 동작을 제어할 수 있다. 여기서 프로그램 루프는 프로그램 동작과 프로그램 검증 동작을 포함할 수 있고, 소거 루프는 소거 동작과 소거 검증 동작을 포함할 수 있다. 여기서 독출 동작은 노멀 독출 동작과 데이터 리커버리 독출 동작을 포함할 수 있다.
예를 들어, 제어 회로(550)는 커맨드 신호(CMD)에 기초하여 전압 생성기(560)를 제어하기 위한 제어 신호들(CTL) 및 페이지 버퍼 회로(510)를 제어하기 위한 제어 신호들(PBC)을 생성하고, 어드레스 신호(ADDR)에 기초하여 행 어드레스(R_ADDR) 및 열 어드레스(C_ADDR)를 생성할 수 있다. 제어 회로(550)는 행 어드레스(R_ADDR)를 어드레스 디코더(530)에 제공하고, 열 어드레스(C_ADDR)를 데이터 입출력 회로(520)에 제공할 수 있다.
어드레스 디코더(530)는 복수의 스트링 선택 라인(SSL), 복수의 워드 라인들(WL) 및 복수의 접지 선택 라인(GSL)을 통해 메모리 셀 어레이(500)와 연결될 수 있다.
프로그램 동작 또는 독출 동작시, 어드레스 디코더(530)는 제어 회로(550)로부터 제공되는 행 어드레스(R_ADDR)에 기초하여 복수의 워드 라인들(WL) 중의 하나를 선택 워드 라인으로 결정하고, 나머지 워드 라인들을 비선택 워드 라인들로 결정할 수 있다.
또한, 프로그램 동작 또는 독출 동작시, 어드레스 디코더(530)는 제어 회로(550)로부터 제공되는 행 어드레스(R_ADDR)에 기초하여 복수의 스트링 선택 라인들(SSL) 중의 하나를 선택 스트링 선택 라인으로 결정하고, 나머지 스트링 선택 라인들을 비선택 스트링 선택 라인들로 결정할 수 있다.
또한, 프로그램 동작 또는 독출 동작 시, 어드레스 디코더(530)는 제어 회로(550)로부터 제공되는 행 어드레스(R_ADDR)에 기초하여 복수의 접지 선택 라인들(GSL) 중의 하나를 선택 접지 선택 라인으로 결정하고, 나머지 접지 선택 라인들을 비선택 접지 선택 라인들로 결정할 수 있다.
전압 생성기(560)는 제어 회로(550)로부터 제공되는 제어 신호들(CTL)에 기초하여 비휘발성 메모리 장치(30)의 동작에 필요한 워드 라인 전압들(VWL)을 생성할 수 있다. 전압 생성기(560)로부터 생성되는 워드 라인 전압들(VWL)은 어드레스 디코더(530)를 통해 복수의 워드 라인들(WL)에 구동 전압들로서 인가될 수 있다.
예를 들어, 소거 동작 시, 전압 생성기(560)는 메모리 블록의 웰 및/또는 공통 소스 라인에 소거 전압을 인가하고 소거 어드레스에 기초하여 메모리 블록의 모든 워드라인들 또는 일부의 서브 블록에 해당하는 워드 라인들에 소거 허용 전압(예를 들어, 접지 전압)을 인가할 수 있다. 소거 검증 동작 시, 전압 생성기(560)는 하나의 메모리 블록의 모든 워드라인들에 소거 검증 전압을 인가하거나 워드라인 단위로 소거 검증 전압을 인가할 수 있다.
예를 들어, 프로그램 동작시, 전압 생성기(560)는 선택 워드 라인에 프로그램 전압을 인가하고, 비선택 워드 라인들에는 프로그램 패스 전압을 인가할 수 있다. 또한 프로그램 검증 동작시, 전압 생성기(560)는 선택 워드 라인에 프로그램 검증 전압을 인가하고, 비선택 워드 라인들에는 검증 패스 전압을 인가할 수 있다.
또한, 노멀 독출 동작시, 전압 생성기(560)는 선택 워드 라인에 독출 전압을 인가하고, 비선택 워드 라인들에는 독출 패스 전압을 인가할 수 있다. 또한 데이터 리커버리 독출 동작시, 전압 생성기(560)는 선택 워드 라인에 인접한 워드 라인에 독출 전압을 인가하고, 선택 워드 라인에는 리커버리 독출 전압을 인가할 수 있다.
페이지 버퍼 회로(510)는 복수의 비트 라인들(BL)을 통해 메모리 셀 어레이(500)와 연결될 수 있다. 페이지 버퍼 회로(510)는 복수의 페이지 버퍼들을 포함할 수 있다. 일 실시예에 있어서, 하나의 페이지 버퍼에 하나의 비트 라인이 연결될 수 있다. 다른 실시예에 있어서, 하나의 페이지 버퍼에 두 개 이상의 비트 라인들이 연결될 수 있다. 페이지 버퍼 회로(510)는 프로그램 동작시 선택된 페이지에 프로그램될 데이터를 임시로 저장하고, 독출 동작시 선택된 페이지로부터 독출된 데이터를 임시로 저장할 수 있다.
데이터 입출력 회로(520)는 데이터 라인들(DL)을 통해 페이지 버퍼 회로(510)와 연결될 수 있다. 프로그램 동작시, 데이터 입출력 회로(520)는 메모리 컨트롤러(20)로부터 프로그램 데이터(DATA)를 수신하고, 제어 회로(550)로부터 제공되는 열 어드레스(C_ADDR)에 기초하여 프로그램 데이터(DATA)를 페이지 버퍼 회로(510)에 제공할 수 있다. 독출 동작시, 데이터 입출력 회로(520)는 제어 회로(550)로부터 제공되는 열 어드레스(C_ADDR)에 기초하여 페이지 버퍼 회로(510)에 저장된 독출 데이터(DATA)를 상기 메모리 컨트롤러(20)에 제공할 수 있다.
또한, 페이지 버퍼 회로(510)와 입출력 회로(520)는 메모리 셀 어레이(500)의 제1 저장 영역으로부터 데이터를 독출하고, 독출된 데이터를 메모리 셀 어레이(500)의 제2 저장 영역에 기입할 수 있다. 즉, 페이지 버퍼 회로(510)와 입출력 회로(520)는 카피-백(copy-back) 동작을 수행할 수 있다. 페이지 버퍼 회로(510)와 입출력 회로(520)는 제어 회로(550)에 의하여 제어될 수 있다.
도 28은 도 27의 비휘발성 메모리 장치에 포함되는 메모리 셀 어레이를 나타내는 블록도이고, 도 29는 도 28의 메모리 셀 어레이에 포함되는 메모리 블록의 등가 회로를 나타내는 회로도이다.
도 28에 도시된 바와 같이, 메모리 셀 어레이(500)는 복수의 메모리 블록들(BLK1~BLKz)을 포함할 수 있다. 메모리 블록들(BLK1~BLKz)은 어드레스 디코더(530)에 의해 선택된다. 예를 들면, 어드레스 디코더(530)는 메모리 블록들(BLK1~BLKz) 중 블록 어드레스에 대응하는 메모리 블록을 선택할 수 있다.
도 29에 도시된 메모리 블록(BLKi)은 기판 상에 삼차원 구조로 형성되는 삼차원 메모리 블록을 나타낸다. 예를 들어, 메모리 블록(BLKi)에 포함되는 복수의 메모리 낸드 스트링들은 상기 기판과 수직한 방향(D3)으로 형성될 수 있다.
도 29를 참조하면, 메모리 블록(BLKi)은 비트 라인들(BL1, BL2, BL3)과 공통 소스 라인(CSL) 사이에 연결되는 복수의 셀 스트링들, 즉 복수의 메모리 낸드 스트링들(NS11~NS33)을 포함할 수 있다. 복수의 메모리 낸드 스트링들(NS11~NS33) 각각은 스트링 선택 트랜지스터(SST), 복수의 메모리 셀들(MC1, MC2, ..., MC8) 및 접지 선택 트랜지스터(GST)를 포함할 수 있다. 도 29에는 복수의 메모리 낸드 스트링들(NS11~NS33) 각각이 8개의 메모리 셀들(MC1, MC2, ..., MC8)을 포함하는 것으로 도시되어 있으나, 본 발명의 실시예들은 이에 한정되지 않는다.
스트링 선택 트랜지스터(SST)는 상응하는 스트링 선택 라인(SSL1, SSL2, SSL3)에 연결될 수 있다. 복수의 메모리 셀들(MC1, MC2, ..., MC8)은 상응하는 게이트 라인들(GTL1, GTL2, ..., GTL8)에 각각 연결될 수 있다. 게이트 라인들(GTL1, GTL2, ..., GTL8)은 워드 라인들에 해당할 수 있으며, 게이트 라인(GTL1, GTL2, ..., GTL8)의 일부는 더미 워드 라인에 해당할 수 있다. 접지 선택 트랜지스터(GST)는 상응하는 접지 선택 라인(GSL1, GSL2, GSL3)에 연결될 수 있다. 스트링 선택 트랜지스터(SST)는 상응하는 비트 라인(BL1, BL2, BL3)에 연결되고, 접지 선택 트랜지스터(GST)는 공통 소스 라인(CSL)에 연결될 수 있다.
동일 높이의 워드 라인(예를 들면, GTL1)은 공통으로 연결되고, 접지 선택 라인(GSL1, GSL2, GSL3) 및 스트링 선택 라인(SSL1, SSL2, SSL3)은 각각 분리될 수 있다. 도 29에는 메모리 블록(BLK)이 여덟 개의 게이트 라인(GTL1, GTL2, ..., GTL8) 및 세 개의 비트 라인들(BL1, BL2, BL3)에 연결되는 것으로 도시되어 있으나, 본 발명의 실시예들은 이에 한정되지 않는다.
도 30은 본 발명의 실시예들에 따른 시스템을 나타내는 블록도이다.
도 30을 참조하면, 시스템(2000)은 호스트 장치(2110), 스토리지 장치(2310) 및 호스트 장치(2110)와 스토리지 장치(2310) 사이에 배치되는 리타이머(2210)를 포함할 수 있다. 일 실시예에서, 호스트 장치(2110)는 마더보드(MBD)(2100)에 장착되고, 리타이머(2210)는 라이저 카드(RCD) (2200) 상에 장착되고, 스토리지 장치(2310)는 애드인 카드(AICD)(2300) 상에 장착될 수 있다. 마더보드(2100), 라이저 카드(2200) 및 애드인 카드(2300)는 커넥터들(CNT)을 통하여 전기적으로 연결될 수 있다.
전술한 바와 같이, 스토리지 장치(2310)는 송신 버퍼의 상태 및 송신 플로우 컨트롤러의 상태를 모니터링하여 내부 클록 신호의 주파수를 제어하는 다이내믹 주파수 컨트롤러를 포함할 수 있다. 송신 버퍼의 상태 및 송신 플로우 컨트롤러의 상태를 함께 모니터링하여 스토리지 컨트롤러의 내부 클록 신호의 주파수를 제어함으로써 스토리지 장치로부터 호스트 장치로의 전송 지연을 방지하면서도 스토리지 장치의 전력 소모를 감소할 수 있다.
본 발명의 실시예들은 신호 전송이 요구되는 장치 및 시스템에 유용하게 이용될 수 있다. 특히 본 발명의 실시예들은 메모리 카드, 솔리드 스테이트 드라이브(Solid State Drive; SSD), 임베디드 멀티미디어 카드(eMMC, embedded multimedia card), 유니버셜 플래시 스토리지(UFS, universal flash storage), 컴퓨터(computer), 노트북(laptop), 핸드폰(cellular phone), 스마트폰(smart phone), MP3 플레이어, 피디에이(Personal Digital Assistants; PDA), 피엠피(Portable Multimedia Player; PMP), 디지털 TV, 디지털 카메라, 포터블 게임 콘솔(portable game console), 네비게이션(navigation) 기기, 웨어러블(wearable) 기기, IoT(internet of things;) 기기, IoE(internet of everything:) 기기, e-북(e-book), VR(virtual reality) 기기, AR(augmented reality) 기기, 서버 시스템, 자율 주행 시스템, 등과 같은 전자 기기에 더욱 유용하게 적용될 수 있다.
상기에서는 본 발명이 바람직한 실시예를 참조하여 설명하였지만, 해당 기술분야의 숙련된 당업자는 하기의 청구범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 것이다.

Claims (20)

  1. 링크를 통하여 연결되는 송신 장치 및 수신 장치를 포함하고,
    상기 수신 장치는,
    트랜잭션 레이어 패킷들을 수신하여 저장하는 수신 버퍼; 및
    상기 수신 버퍼의 점유 상태를 모니터링하여 플로우 컨트롤 패킷들을 생성하는 수신 플로우 컨트롤러를 포함하고,
    상기 송신 장치는,
    상기 수신 장치로 전송될 펜딩 트랜잭션 레이어 패킷들을 저장하는 송신 버퍼;
    상기 수신 장치로부터 수신되는 플로우 컨트롤 패킷들에 기초하여 상기 수신 장치로 전송되는 트랜잭션 레이어 패킷의 플로우를 제어하는 송신 플로우 컨트롤러; 및
    상기 송신 버퍼의 상태 및 상기 송신 플로우 컨트롤러의 상태를 모니터링하여 상기 송신 장치의 내부 클록 신호의 주파수를 제어하는 다이내믹 주파수 컨트롤러를 포함하는 시스템.
  2. 제1 항에 있어서,
    상기 송신 플로우 컨트롤러는,
    상기 플로우 컨트롤 패킷들에 포함되는 할당 크레딧에 의해 업데이트되는 한계 크레딧 및 상기 수신 장치로 전송된 트랜잭션 레이어 패킷들의 개수에 상응하는 소비 크레딧의 차이에 기초하여 상기 수신 장치의 수신 버퍼가 상기 트랜잭션 레이어 패킷을 수신하여 저장할 수 있는 저장 공간이 부족한지 여부를 결정하고 상기 저장 공간이 부족하다고 결정한 경우 상기 수신 장치로의 트랜잭션 레이어 패킷의 전송을 차단하는 것을 특징으로 하는 시스템.
  3. 제1 항에 있어서,
    상기 다이내믹 주파수 컨트롤러는,
    상기 송신 버퍼에 저장된 상기 펜딩 트랜잭션 레이어 패킷들의 개수가 1 이상이고 상기 송신 플로우 컨트롤러가 상기 수신 장치로의 상기 트랜잭션 레이어 패킷의 송신을 차단하는 플로우 지연 상태가 발생한 경우 상기 내부 클록 신호의 주파수를 증가하는 것을 특징으로 하는 시스템.
  4. 제3 항에 있어서,
    상기 다이내믹 주파수 컨트롤러는,
    상기 내부 클록 신호의 주파수를 단계적으로 증가하는 복수의 스텝 주파수들로 설정하고, 상기 복수의 스텝 주파수들 중 최소 주파수에서 시작하여 상기 복수의 스텝 주파수들 중 최대 주파수가 될 때까지 상기 내부 클록 신호의 주파수를 단계적으로 증가하는 것을 특징으로 하는 시스템.
  5. 제4 항에 있어서,
    상기 다이내믹 주파수 컨트롤러는,
    상기 링크의 리셋이 완료되면 상기 내부 클록 신호의 주파수를 상기 최소 주파수로 초기화하는 것을 특징으로 하는 시스템.
  6. 제4 항에 있어서,
    상기 다이내믹 주파수 컨트롤러는,
    주기적으로 상기 플로우 지연 상태의 발생 여부를 결정하고, 상기 플로우 지연 상태가 발생할 때마다 상기 최대 주파수가 될 때까지 상기 내부 클록 신호의 주파수를 한 단계씩 증가시키는 것을 특징으로 하는 시스템.
  7. 제4 항에 있어서,
    상기 다이내믹 주파수 컨트롤러는,
    상기 내부 클록 신호의 주파수가 상기 최대 주파수에 도달한 이후에는 상기 링크가 리셋되기 전까지 상기 내부 클록 신호의 주파수를 최대 주파수로 유지하는 것을 특징으로 하는 시스템.
  8. 제4 항에 있어서,
    상기 다이내믹 주파수 컨트롤러는,
    상기 송신 버퍼에 저장된 상기 펜딩 트랜잭션 레이어 패킷들의 개수가 기준 개수보다 작고 상기 송신 플로우 컨트롤러가 상기 수신 장치로의 상기 트랜잭션 레이어 패킷의 송신을 허용하는 플로우 원활 상태가 발생한 경우 상기 내부 클록 신호의 주파수를 감소하는 것을 특징으로 하는 시스템.
  9. 제8 항에 있어서,
    상기 다이내믹 주파수 컨트롤러는,
    주기적으로 상기 플로우 원활 상태의 발생 여부를 결정하고, 상기 플로우 원활 상태가 발생할 때마다 상기 최소 주파수가 될 때까지 상기 내부 클록 신호의 주파수를 한 단계씩 감소시키는 것을 특징으로 하는 시스템.
  10. 제1 항에 있어서,
    상기 다이내믹 주파수 컨트롤러는
    상기 플로우 컨트롤 패킷들에 포함되는 할당 크레딧에 의해 업데이트되는 한계 크레딧 및 상기 수신 장치로 전송된 트랜잭션 레이어 패킷들의 개수에 상응하는 소비 크레딧의 차이가 제1 기준 크레딧보다 작은 경우 상기 내부 클록 신호의 주파수를 증가하는 것을 특징으로 하는 시스템.
  11. 제10 항에 있어서,
    상기 다이내믹 주파수 컨트롤러는
    상기 한계 크레딧 및 상기 소비 크레딧의 차이가 상기 제1 기준 크레딧보다 큰 제2 기준 크레딧보다 큰 경우 상기 내부 클록 신호의 주파수를 감소하는 것을 특징으로 하는 시스템.
  12. 제1 항에 있어서,
    상기 다이내믹 주파수 컨트롤러는,
    제1 주기에 의해 주기적으로 상기 내부 클록 신호의 주파수를 증가시킬지 여부를 결정하고,
    상기 제1 주기보다 긴 제2 주기에 의해 주기적으로 상기 내부 클록 신호의 주파수를 증가시킬지 여부를 결정하는 것을 특징으로 하는 시스템.
  13. 제1 항에 있어서,
    상기 내부 클록 신호는 상기 송신 장치의 PHY 계층과 내부 로직 회로 사이의 신호 전송의 동기화에 이용되는 PIPE 클록 신호인 것을 특징으로 하는 시스템.
  14. 제1 항에 있어서,
    상기 다이내믹 주파수 컨트롤러는,
    상기 송신 장치 및 상기 수신 장치 사이의 전송 속도를 제어하는 비트율 클록 신호의 주파수에 관계 없이 상기 송신 장치로부터 상기 수신 장치로의 전송 지연이 발생한 경우 상기 송신 장치의 플로우 컨트롤 업데이트 동작의 속도를 증가시키도록 상기 내부 클록 신호의 주파수를 증가시키는 것을 특징으로 하는 시스템.
  15. 제1 항에 있어서,
    상기 송신 장치 및 상기 수신 장치 사이에 배치되는 리타이머를 더 포함하는 것을 특징으로 하는 시스템.
  16. 제1 항에 있어서,
    상기 송신 장치 및 상기 수신 장치는, 피씨아이 익스프레스 (PCIe, Peripheral Component Interconnect Express) 표준에 따른 PCIe 링크를 통하여 연결되는 것을 특징으로 하는 시스템.
  17. 피씨아이 익스프레스 (PCIe, Peripheral Component Interconnect Express) 표준에 따른 PCIe 링크를 통하여 호스트 장치와 연결되는 스토리지 장치로서,
    데이터를 저장하는 비휘발성 메모리 장치; 및
    상기 비휘발성 메모리 장치를 제어하는 스토리지 컨트롤러를 포함하고,
    상기 스토리지 컨트롤러는,
    상기 호스트 장치로 전송될 펜딩 트랜잭션 레이어 패킷들을 저장하는 송신 버퍼;
    상기 호스트 장치로부터 수신되는 플로우 컨트롤 패킷들에 기초하여 상기 수신 장치로 전송되는 트랜잭션 레이어 패킷의 플로우를 제어하는 송신 플로우 컨트롤러; 및
    상기 송신 버퍼의 상태 및 상기 송신 플로우 컨트롤러의 상태를 모니터링하여 상기 스토리지 컨트롤러의 장치의 내부 클록 신호의 주파수를 제어하는 다이내믹 주파수 컨트롤러를 포함하는 스토리지 장치.
  18. 제17 항에 있어서,
    상기 다이내믹 주파수 컨트롤러는,
    상기 송신 버퍼에 저장된 상기 펜딩 트랜잭션 레이어 패킷들의 개수가 1 이상이고 상기 송신 플로우 컨트롤러가 상기 호스트 장치로의 상기 트랜잭션 레이어 패킷의 송신을 차단하는 플로우 지연 상태가 발생한 경우 상기 내부 클록 신호의 주파수를 증가하는 것을 특징으로 하는 스토리지 장치.
  19. 제18 항에 있어서,
    상기 다이내믹 주파수 컨트롤러는,
    상기 내부 클록 신호의 주파수를 단계적으로 증가하는 복수의 스텝 주파수들로 설정하고, 상기 복수의 스텝 주파수들 중 최소 주파수에서 시작하여 상기 복수의 스텝 주파수들 중 최대 주파수가 될 때까지 상기 내부 클록 신호의 주파수를 단계적으로 증가하고,
    상기 PCIe 링크의 리셋이 완료되면 상기 내부 클록 신호의 주파수를 상기 최소 주파수로 초기화하는 것을 특징으로 하는 스토리지 장치.
  20. 피씨아이 익스프레스 (PCIe, Peripheral Component Interconnect Express) 표준에 따른 PCIe 링크를 통하여 연결되는 제1 장치 및 제2 장치를 포함하고,
    상기 제1 장치 및 상기 제2 장치의 각각은,
    상기 PCIe 링크를 통하여 전송되는 트랜잭션 레이어 패킷들을 수신하여 저장하는 수신 버퍼; 및
    상기 수신 버퍼의 점유 상태를 모니터링하여 플로우 컨트롤 패킷들을 생성하는 수신 플로우 컨트롤러;
    상기 PCIe 링크를 통하여 전송될 펜딩 트랜잭션 레이어 패킷들을 저장하는 송신 버퍼;
    상기 PCIe 링크를 통하여 수신되는 플로우 컨트롤 패킷들에 기초하여 상기 PCIe 링크를 통하여 전송되는 트랜잭션 레이어 패킷의 플로우를 제어하는 송신 플로우 컨트롤러; 및
    상기 송신 버퍼의 상태 및 상기 송신 플로우 컨트롤러의 상태를 모니터링하여 상기 제1 장치 및 상기 제2 장치의 각각의 내부 클록 신호의 주파수를 제어하는 다이내믹 주파수 컨트롤러를 포함하는 시스템.
KR1020210128005A 2021-09-28 2021-09-28 흐름 제어 모니터링을 통하여 동작을 제어하는 스토리지 장치 및 시스템 KR20230045306A (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020210128005A KR20230045306A (ko) 2021-09-28 2021-09-28 흐름 제어 모니터링을 통하여 동작을 제어하는 스토리지 장치 및 시스템
US17/706,137 US11733872B2 (en) 2021-09-28 2022-03-28 Storage device and system of controlling operation through flow control monitoring
EP22166658.9A EP4155952A1 (en) 2021-09-28 2022-04-05 Storage device and system of controlling operation through flow control monitoring
CN202210563947.8A CN115878524A (zh) 2021-09-28 2022-05-23 存储装置和电子系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210128005A KR20230045306A (ko) 2021-09-28 2021-09-28 흐름 제어 모니터링을 통하여 동작을 제어하는 스토리지 장치 및 시스템

Publications (1)

Publication Number Publication Date
KR20230045306A true KR20230045306A (ko) 2023-04-04

Family

ID=81326644

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210128005A KR20230045306A (ko) 2021-09-28 2021-09-28 흐름 제어 모니터링을 통하여 동작을 제어하는 스토리지 장치 및 시스템

Country Status (4)

Country Link
US (1) US11733872B2 (ko)
EP (1) EP4155952A1 (ko)
KR (1) KR20230045306A (ko)
CN (1) CN115878524A (ko)

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5212196A (en) 1975-07-16 1977-01-29 Nippon Chemiphar Co Ltd Preparation of pyrido(4,3-b)carbazoles
JP2005332250A (ja) 2004-05-20 2005-12-02 Toshiba Corp データ処理装置およびフロー制御方法
JP4376165B2 (ja) 2004-10-12 2009-12-02 ティーオーエー株式会社 受信装置,クロック調整方法および放送システム
JP4425115B2 (ja) 2004-11-16 2010-03-03 日本電信電話株式会社 クロック同期装置およびプログラム
US7827325B2 (en) 2007-10-31 2010-11-02 International Business Machines Corporation Device, system, and method of speculative packet transmission
JP2009205334A (ja) 2008-02-27 2009-09-10 Hitachi Ltd 性能モニタ回路及び性能モニタ方法
US9467120B1 (en) 2013-12-19 2016-10-11 Altera Corporation Power management for PCI express
JP5948361B2 (ja) 2014-03-28 2016-07-06 株式会社Pfu 情報処理装置、および、出力調整方法
KR102211126B1 (ko) 2014-04-17 2021-02-02 삼성전자주식회사 동작 성능을 조절하는 메모리 시스템 및 메모리 시스템의 동작방법
US10049074B2 (en) 2015-08-25 2018-08-14 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. PCI-E real-time flow control optimization
US10095653B2 (en) * 2016-04-02 2018-10-09 Intel Corporation Apparatuses, systems, and methods for accurately measuring packet propagation delays through USB retimers
US11003616B1 (en) * 2017-06-27 2021-05-11 Amazon Technologies, Inc Data transfer using point-to-point interconnect
US20200265000A1 (en) * 2019-02-19 2020-08-20 Fujitsu Client Computing Limited Information processing system
JP6667025B1 (ja) 2019-03-29 2020-03-18 デンカ株式会社 蛍光体粒子、複合体、発光装置および蛍光体粒子の製造方法
US11748278B2 (en) * 2019-06-20 2023-09-05 Intel Corporation Multi-protocol support for transactions
US11366776B1 (en) * 2021-04-13 2022-06-21 Renesas Electronics America Inc. Network device configuration based on slave device type

Also Published As

Publication number Publication date
US11733872B2 (en) 2023-08-22
CN115878524A (zh) 2023-03-31
EP4155952A1 (en) 2023-03-29
US20230094436A1 (en) 2023-03-30

Similar Documents

Publication Publication Date Title
EP3822802B1 (en) Ordered sets for high-speed interconnects
CN107925507B (zh) 多芯片封装链路错误检测
KR101457518B1 (ko) 메모리 제어기들에 있어서의 데이터 무결성 및 방법들
US11853162B2 (en) Controller and storage device
TW201512843A (zh) 可於多重資料寬度通訊之記憶體組件
US20160350250A1 (en) Input output data alignment
US10891179B2 (en) Data storage device with deadlock recovery capabilities
EP4155952A1 (en) Storage device and system of controlling operation through flow control monitoring
US20160006808A1 (en) Electronic system with memory network mechanism and method of operation thereof
US11782616B2 (en) Storage system and method of operating the same
US11875064B2 (en) Solid state drive supporting both byte addressable protocol and block addressable protocol
JP7186262B2 (ja) 共有データ統計情報を使用したコンテンツアウェア復号(Content Aware Decoding)
US9201599B2 (en) System and method for transmitting data in storage controllers
US20180089136A1 (en) Simultaneous inbound multi-packet processing
US20220326855A1 (en) Peripheral component interconnect express interface device and operating method thereof
US20230266917A1 (en) Storage system
US20240143518A1 (en) Using Control Bus Communication to Accelerate Link Negotiation
US11853218B2 (en) Semi and cached TLP coalescing
US20240020262A1 (en) Storage controller and storage device comprising the same
KR20220069793A (ko) PCIe TLP 합체에 의한 유효한 PCIe 활용
KR20240036851A (ko) 스토리지 장치 및 이를 포함하는 전자 장치
CN118069041A (zh) 存储装置、存储系统和控制该存储系统的操作的方法