KR102145420B1 - 데이터 전송 속도를 변경하는 스토리지 시스템 및 그것의 데이터 전송 속도 변경 방법 - Google Patents
데이터 전송 속도를 변경하는 스토리지 시스템 및 그것의 데이터 전송 속도 변경 방법 Download PDFInfo
- Publication number
- KR102145420B1 KR102145420B1 KR1020130088109A KR20130088109A KR102145420B1 KR 102145420 B1 KR102145420 B1 KR 102145420B1 KR 1020130088109 A KR1020130088109 A KR 1020130088109A KR 20130088109 A KR20130088109 A KR 20130088109A KR 102145420 B1 KR102145420 B1 KR 102145420B1
- Authority
- KR
- South Korea
- Prior art keywords
- speed mode
- data
- host
- ufs
- transmission
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
- G06F13/4291—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus using a clocked protocol
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy 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)
- Information Transfer Systems (AREA)
- Power Sources (AREA)
- Communication Control (AREA)
Abstract
본 발명의 실시 예에 따른 UFS 시스템은 플래시 메모리를 기반으로 하는 UFS 장치; 및 인터페이스를 통해 상기 UFS 장치와 연결되고 상기 UFS 장치로부터 입력된 효율적 전송 속도 정보를 이용하여 데이터 전송 속도를 변경하는 UFS 호스트를 포함하되, 상기 UFS 장치는 데이터 전송량을 통해 효율적 전송 속도를 계산하고, 효율적 전송 속도 정보를 상기 UFS 호스트로 전송한다. 본 발명은 UFS 호스트와 UFS 장치 양쪽의 요구를 모두 만족하는 최대 전송 속도가 아니라, 실제 데이터 전송량에 맞게 데이터 전송 속도를 변경함으로 전력 소모를 줄일 수 있다.
Description
본 발명은 스토리지 시스템에 관한 것으로, 더욱 상세하게는 데이터 전송 속도를 변경하는 스토리지 시스템 및 그것의 데이터 전송 속도 변경 방법에 관한 것이다.
스토리지 시스템(storage system)은 호스트(host)와 저장 장치(storage device)로 구성된다. 호스트와 저장 장치는 UFS(universal flash storage), SATA(serial ATA), SCSI(small computer small interface), SAS(serial attached SCSI), eMMC(embedded MMC) 등과 같은 다양한 표준 인터페이스를 통해 연결된다. 스토리지 시스템이 모바일 장치에 사용되는 경우에, 전력 소모를 줄이는 것은 매우 중요하다.
스토리지 시스템의 성능(performance)과 전력 소모는 trade-off 관계에 있다. 즉, 데이터 전송 속도가 빨라지면, 시스템 성능은 좋아지지만 전력 소모가 많아진다. 반대로, 데이터 전송 속도가 느려지면, 전력 소모는 줄어들지만 시스템 성능은 떨어진다.
종래의 스토리지 시스템은 호스트와 저장 장치 양쪽의 요구를 모두 만족하는 최대 속도로 데이터를 전송한다. 이 경우에 스토리지 시스템은 지나치게 높은 속도로 데이터를 전송함으로 불필요하게 전력을 소모할 수 있다.
본 발명은 상술한 기술적 문제점을 해결하기 위해 제안된 것으로, 본 발명의 목적은 호스트와 저장 장치 양쪽의 요구를 모두 만족하는 최대 전송 속도가 아니라, 실제 데이터 전송량에 맞게 데이터 전송 속도를 변경함으로 전력 소모를 줄이는 스토리지 시스템 및 그것의 데이터 전송 속도 변경 방법을 제공하는 데 있다.
본 발명의 실시 예에 따른 스토리지 시스템의 저장 장치는, DMA 큐에 입력된 데이터 크기 정보를 통해 데이터 전송량을 계산하는 장치 DMA; 상기 장치 DMA로부터 데이터 전송량을 입력받고, 속도 모드 테이블을 이용하여 효율적 전송 속도를 계산하는 CMD 관리자; 및 효율적 전송 속도 정보를 호스트로 전송하기 위한 장치 인터페이스를 포함한다.
실시 예로서, 상기 장치 DMA는 상기 장치 인터페이스를 통해 입력되는 수신 데이터의 크기 정보를 이용하여 수신 데이터 전송량을 계산하고, 상기 장치 인터페이스를 통해 상기 호스트로 전송될 송신 데이터의 크기 정보를 이용하여 송신 데이터 전송량을 계산한다.
상기 장치 DMA는 상기 장치 인터페이스를 통해 입력되는 수신 데이터의 크기 정보를 저장하는 수신 DMA 큐; 상기 장치 인터페이스를 통해 상기 호스트로 전송될 송신 데이터의 크기 정보를 저장하는 송신 DMA 큐; 및 상기 수신 DMA 큐로부터 수신 데이터 전송량을 계산하고 상기 송신 DMA 큐로부터 송신 데이터 전송량을 계산하고, 상기 수신 데이터 전송량과 상기 송신 데이터 전송량을 상기 CMD 관리자로 제공하는 DMA 관리자를 포함한다.
다른 실시 예로서, 상기 호스트는 효율적 전송 속도 정보를 입력받고, 상기 호스트의 인터페이스와 상기 저장 장치의 인터페이스의 속도 모드를 변경한다. 상기 CMD 관리자는 속도 모드 경계에서 빈번한 속도 모드 변경을 방지하기 위해, 속도 모드에 여유분(margin)을 두고 속도 모드의 여유분을 넘을 때 또는 소정의 속도 모드 변경 회수에 도달할 때 속도 모드를 변경할 수 있다.
본 발명의 실시 예에 따른 UFS 시스템은 플래시 메모리를 기반으로 하는 UFS 장치; 및 인터페이스를 통해 상기 UFS 장치와 연결되고 상기 UFS 장치로부터 입력된 효율적 전송 속도 정보를 이용하여 데이터 전송 속도를 변경하는 UFS 호스트를 포함하되, 상기 UFS 장치는 데이터 전송량을 통해 효율적 전송 속도를 계산하고, 효율적 전송 속도 정보를 상기 UFS 호스트로 전송한다.
실시 예로서, 상기 UFS 장치는, 데이터 크기 정보를 통해 데이터 전송량을 계산하는 장치 DMA; 및 상기 장치 DMA로부터 데이터 전송량을 입력받고, 속도 모드 테이블을 이용하여 효율적 전송 속도를 계산하는 CMD 관리자를 포함한다.
다른 실시 예로서, 상기 장치 DMA는 장치 인터페이스를 통해 입력되는 수신 데이터의 크기 정보를 이용하여 수신 데이터 전송량을 계산하고, 상기 장치 인터페이스를 통해 상기 UFS 호스트로 전송될 송신 데이터의 크기 정보를 이용하여 송신 데이터 전송량을 계산한다. 상기 장치 DMA는 상기 장치 인터페이스를 통해 입력되는 수신 데이터의 크기 정보를 저장하는 수신 DMA 큐; 상기 장치 인터페이스를 통해 상기 호스트로 전송될 송신 데이터의 크기 정보를 저장하는 송신 DMA 큐; 및 상기 수신 DMA 큐로부터 수신 데이터 전송량을 계산하고 상기 송신 DMA 큐로부터 송신 데이터 전송량을 계산하고, 상기 수신 데이터 전송량과 상기 송신 데이터 전송량을 상기 CMD 관리자로 제공하는 DMA 관리자를 포함한다.
또 다른 실시 예로서, 상기 CMD 관리자는 속도 모드 경계에서 빈번한 속도 모드 변경을 방지하기 위해, 속도 모드에 여유분(margin)을 두고 속도 모드의 여유분을 넘을 때 또는 소정의 속도 모드 변경 회수에 도달할 때 속도 모드를 변경할 수 있다.
또 다른 실시 예로서, 상기 UFS 호스트는 효율적 전송 속도 정보를 입력받고, 호스트 인터페이스와 장치 인터페이스의 속도 모드를 변경한다. 상기 UFS 장치는 RTT UPIU, DATA IN UPIU 또는 RESPONSE UPIU를 이용하여 효율적 전송 속도 정보를 상기 UFS 호스트로 제공한다.
상기 UFS 호스트는, 상기 호스트 인터페이스를 통해 RTT UPIU, DATA IN UPIU 또는 RESPONSE UPIU를 입력 받는 호스트 DMA; 및 상기 호스트 DMA로부터 입력된 RTT UPIU, DATA IN UPIU 또는 RESPONSE UPIU를 분석하고(parsing), 효율적 전송 속도 정보를 알아내는 CMD 관리자를 포함한다.
상기 UFS 호스트는, 상기 CMD 관리자로부터 효율적 전송 속도 정보를 입력받고 속도 모드 변경 명령을 내리는 장치 드라이버; 및 상기 속도 모드 변경 명령을 입력받고 상기 호스트 인터페이스와 상기 장치 인터페이스의 속도 모드를 변경하는 호스트 컨트롤러 인터페이스를 더 포함한다.
본 발명은 호스트와 저장 장치를 포함하는 스토리지 시스템의 데이터 전송 속도를 변경하는 방법에 관한 것으로, 데이터 전송 속도 변경 방법은 상기 저장 장치 내에서 데이터 크기 정보를 이용하여 데이터 전송량을 계산하는 단계; 상기 데이터 전송량을 입력받고, 속도 모드 테이블을 참조하여 효율적 전송 속도를 계산하는 단계; 효율적 전송 속도 정보를 상기 저장 장치로부터 상기 호스트로 제공하는 단계; 상기 저장 장치로부터 받은 효율적 전송 속도로 데이터 전송 속도를 변경하도록 장치 드라이버에게 요청하는 단계; 및 상기 장치 드라이버의 전송 모드 변경 명령에 응답하여 인터페이스의 데이터 전송 속도를 변경하는 단계를 포함한다.
실시 예로서, 상기 데이터 전송량을 계산하는 단계에서, 수신 데이터 전송량과 송신 데이터 전송량을 구분하여 계산한다. 상기 데이터 전송 속도를 변경하는 단계에서, 속도 모드 경계에서 빈번한 속도 모드 변경을 방지하기 위해 속도 모드에 여유분(margin)을 두고 속도 모드의 여유분을 넘을 때 또는 소정의 속도 모드 변경 회수에 도달할 때 속도 모드를 변경한다.
본 발명의 실시 예에 따른 스토리지 시스템은 저장 장치에서 계산한 데이터 전송량에 근거하여 호스트 및 저장 장치의 데이터 전송 속도를 변경할 수 있다. 본 발명에 의하면, 호스트와 저장 장치 양쪽의 요구를 모두 만족하는 최대 전송 속도가 아니라, 실제 데이터 전송량에 맞게 데이터 전송 속도를 변경함으로 전력 소모를 줄일 수 있다.
도 1은 스토리지 시스템을 보여주는 블록도이다.
도 2는 도 1에 도시된 스토리지 시스템의 프로그램 동작을 예시적으로 보여주는 타이밍도이다.
도 3 내지 도 5는 데이터 전송 속도를 느리게 함으로 피크 파워가 줄어드는 것을 보여주는 타이밍도이다.
도 6은 시간(time)에 따른 데이터 전송량(amount of data transfer)을 보여주는 그래프이다.
도 7은 본 발명의 실시 예에 따른 UFS 시스템을 보여주는 블록도이다.
도 8 내지 도 10은 도 7에 도시된 UFS 장치가 효율적 전송 속도(efficient transfer speed)를 계산하는 방법을 예시적으로 설명하기 위한 도면이다.
도 11은 도 7에 도시된 UFS 호스트가 데이터 전송 속도를 변경하는 방법을 설명하기 위한 블록도이다.
도 12는 본 발명의 실시 예에 따른 스토리지 시스템의 데이터 전송 속도 변경 방법을 보여주는 순서도이다.
도 13은 시간(time)에 따른 데이터 전송량(amount of data transfer)을 보여주는 그래프로, 속도 모드 변경이 자주 발생하는 예를 보여준다.
도 14는 본 발명의 실시 예에 따른 스토리지 시스템의 데이터 전송 대역폭(data transfer bandwidth)의 이득(gain)을 보여주는 그래프이다.
도 2는 도 1에 도시된 스토리지 시스템의 프로그램 동작을 예시적으로 보여주는 타이밍도이다.
도 3 내지 도 5는 데이터 전송 속도를 느리게 함으로 피크 파워가 줄어드는 것을 보여주는 타이밍도이다.
도 6은 시간(time)에 따른 데이터 전송량(amount of data transfer)을 보여주는 그래프이다.
도 7은 본 발명의 실시 예에 따른 UFS 시스템을 보여주는 블록도이다.
도 8 내지 도 10은 도 7에 도시된 UFS 장치가 효율적 전송 속도(efficient transfer speed)를 계산하는 방법을 예시적으로 설명하기 위한 도면이다.
도 11은 도 7에 도시된 UFS 호스트가 데이터 전송 속도를 변경하는 방법을 설명하기 위한 블록도이다.
도 12는 본 발명의 실시 예에 따른 스토리지 시스템의 데이터 전송 속도 변경 방법을 보여주는 순서도이다.
도 13은 시간(time)에 따른 데이터 전송량(amount of data transfer)을 보여주는 그래프로, 속도 모드 변경이 자주 발생하는 예를 보여준다.
도 14는 본 발명의 실시 예에 따른 스토리지 시스템의 데이터 전송 대역폭(data transfer bandwidth)의 이득(gain)을 보여주는 그래프이다.
이하에서, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여, 본 발명의 실시 예를 첨부된 도면을 참조하여 설명하기로 한다.
도 1은 본 발명의 실시 예에 따른 스토리지 시스템을 보여주는 블록도이다. 도 1을 참조하면, 스토리지 시스템(1000)은 호스트(1100)와 저장 장치(1200)를 포함한다. 호스트(1100)와 저장 장치(1200)는 각각 호스트 인터페이스(1101)와 장치 인터페이스(1201)를 포함한다.
호스트 인터페이스(1101)와 장치 인터페이스(1201)는 데이터나 신호를 주고 받기 위한 데이터 라인(DIN, DOUT)과 전원을 제공하기 위한 전원 라인(PWR)을 통해 연결될 수 있다. 호스트(1100)와 저장 장치(1200)는 UFS(universal flash storage), SATA(serial ATA), SCSI(small computer small interface), SAS(serial attached SCSI), eMMC(embedded MMC) 등과 같은 표준 인터페이스를 통해 연결될 수 있다.
계속해서 도 1을 참조하면, 호스트(1100)는 애플리케이션(1110), 장치 드라이버(1120), 호스트 컨트롤러(1130), 그리고 버퍼 메모리(1140)를 포함한다. 애플리케이션(1110)은 호스트(1100)에서 실행되는 다양한 응용 프로그램들이다. 장치 드라이버(1120)는 호스트(1100)에 연결되어 사용되는 주변 장치들을 구동하기 위한 것으로, 도 1에서는 저장 장치(1200)를 구동한다. 애플리케이션(1110)이나 장치 드라이버(1120)는 소프트웨어(software) 또는 펌웨어(firmware) 등을 통해 구현될 수 있다.
호스트 컨트롤러(1130)는 호스트(1100) 내부의 전반적인 동작을 제어한다. 예를 들면, 호스트 컨트롤러(1130)는 장치 드라이버(1120)로부터 쓰기 요청을 받으면, 버퍼 메모리(1140)에 저장된 데이터를 호스트 인터페이스(1101)를 통해 저장 장치(1200)로 제공한다. 또한, 호스트 컨트롤러(1130)는 읽기 요청을 받으면, 호스트 인터페이스(1101)를 통해 저장 장치(1200)로 읽기 명령을 제공하고, 저장 장치(1200)로부터 데이터를 입력받는다.
버퍼 메모리(1140)는 호스트(1100)의 메인 메모리(main memory) 또는 캐시 메모리로 사용되거나, 저장 장치(1200)로 제공될 데이터를 임시로 저장하기 위한 메모리로 될 수 있다. 또한, 버퍼 메모리(1140)는 애플리케이션(1110)이나 장치 드라이버(1120) 등과 같은 소프트웨어를 구동하기 위한 구동 메모리(driving memory)로 사용될 수도 있다.
저장 장치(1200)는 장치 인터페이스(1201)를 통해서 호스트(1100)와 연결될 수 있다. 저장 장치(1200)는 불휘발성 메모리(NVM, 1210), 장치 컨트롤러(1230), 그리고 버퍼 메모리(1240)를 포함한다.
불휘발성 메모리(1210)에는 플래시 메모리, MRAM, PRAM, FeRAM 등이 포함될 수 있다. 장치 컨트롤러(1230)는 불휘발성 메모리(1210)의 쓰기, 읽기, 소거 등과 같은 전반적인 동작을 제어한다. 장치 컨트롤러(1230)는 어드레스 또는 데이터 버스를 통해 불휘발성 메모리(1210) 또는 버퍼 메모리(1240)와 데이터를 주고 받는다.
버퍼 메모리(1240)는 불휘발성 메모리(1210)에 저장될 또는 불휘발성 메모리(1210)로부터 읽은 데이터를 임시 저장하는 데 사용될 수 있다. 버퍼 메모리(1240)는 휘발성 메모리 또는 불휘발성 메모리로 구현될 수 있다.
도 1에 도시된 스토리지 시스템(1000)은 호스트(1100)와 저장 장치(1200)의 연결 부분인 인터페이스 부분에서 전력을 많이 소모한다. 특히, 호스트(1100)와 저장 장치(1200) 사이에 동영상 등과 같이 많은 양의 데이터가 고속으로 전송되는 경우에, 인터페이스 부분에서 전력 소모가 많을 수 있다.
도 1에 도시된 스토리지 시스템(1000)이 모바일 장치에 사용되는 경우에, 전력 소모를 줄이는 것은 매우 중요한 문제이다. 전력 소모를 줄이기 위해 대기 시간(idle Time)에 사용하지 않는 모듈의 전원(power)이나 클록(clock)을 끄는 방법이 주로 사용되고 있다. 그러나 스토리지 시스템(1000)은 불휘발성 메모리(1210)가 데이터를 전송하는 시간 동안에 전력을 많이 소비한다.
스토리지 시스템(1000)의 성능(performance)과 전력 소모는 trade-off 관계에 있다. 즉, 데이터 전송 속도가 빨라지면, 시스템 성능은 좋아지지만 전력 소모가 많아진다. 반대로, 데이터 전송 속도가 느려지면, 전력 소모는 줄어들지만 시스템 성능은 떨어진다. 종래의 스토리지 시스템은 일반적으로 호스트와 저장 장치 양쪽의 요구를 모두 만족하는 최대 속도로 데이터를 전송한다. 이 경우에 스토리지 시스템은 지나치게 높은 속도로 데이터를 전송함으로 불필요하게 전력을 소모할 수 있다.
도 2는 도 1에 도시된 스토리지 시스템의 프로그램 동작을 예시적으로 보여주는 타이밍도이다. 도 2를 참조하면, 호스트(도 1 참조, 1100)는 저장 장치(도 1 참조, 1200)로 프로그램 명령(PGM)과 제 1 및 제 2 데이터(DATA1, DATA2)를 제공한다. 저장 장치(1200)는 프로그램 명령(PGM)을 입력받고, 제 1 및 제 2 데이터(DATA1, DATA2)에 대한 프로그램 동작을 수행한다. 제 1 데이터(DATA1)는 제 1 프로그램 시간(tPROG1) 동안 수행되고, 제 2 데이터(DATA)는 제 2 프로그램 시간(tPROG2) 동안 수행된다.
도 1 및 도 2를 참조하면, 호스트(1100)가 제 1 데이터(DATA1)를 전송하면, 저장 장치(1200)는 버퍼 메모리(1240)에 제 1 데이터(DATA1)를 임시로 저장한다. 저장 장치(1200)는 버퍼 메모리(1240)에 임시로 저장된 제 1 데이터(DATA1)를 불휘발성 메모리(1210)에 프로그램한다. 여기에서, 불휘발성 메모리(1210)는 제 1 프로그램 시간(tPROG1) 동안에 제 1 데이터(DATA1)를 프로그램한다.
저장 장치(1200)는 제 1 데이터(DATA1)에 대한 프로그램 동작이 종료된 다음에, 제 2 데이터(DATA2)에 대한 프로그램 동작을 수행한다. 저장 장치(1200)는 버퍼 메모리(1240)에 임시로 저장된 제 2 데이터(DATA2)를 불휘발성 메모리(1210)에 프로그램한다. 불휘발성 메모리(1210)는 제 2 프로그램 시간(tPROG2) 동안에 제 2 데이터(DATA2)를 프로그램한다.
계속해서 도 2를 참조하면, 호스트(1100)가 제 1 데이터(DATA1)를 전송하면, 불휘발성 메모리(1210)는 제 1 데이터(DATA1)를 프로그램한다. 불휘발성 메모리(1210)가 제 1 데이터(DATA1)를 프로그램하는 동안에, 호스트(1100)는 제 2 데이터(DATA2)를 저장 장치(1200)로 제공할 수 있다.
도 2에서 보는 바와 같이, 불휘발성 메모리(1210)가 제 1 데이터(DATA1)를 프로그램하는 시간(tPROG1)은 호스트(1100)가 제 2 데이터(DATA2)를 전송하는 시간(t1) 보다 상대적으로 길다. 호스트(1100)가 제 2 데이터(DATA2)를 전송하는 시간을 t1에서 t2로 늘린다고 가정하자. 이때 제 2 데이터(DATA2)는 제 1 프로그램 시간(tPROG1) 내의 대기 시간 동안에 전송되기 때문에, 스토리지 시스템(1000)의 성능에는 크게 영향을 미치지 않는다. 스토리지 시스템(1000)은 데이터 전송 시간을 길게 함으로서 피크 파워(peak power)를 줄일 수 있고, 이로 인해 발열과 전력 소모를 줄일 수 있다.
데이터 전송 속도(data transfer speed)와 피크 파워(peak power) 사이에는 상관 관계가 있다. 즉, 데이터 전송 속도가 빠를수록 피크 파워는 높아지고, 데이터 전송 속도가 느릴수록 피크 파워는 낮아진다. 도 2의 예에서, 제 2 데이터(DATA2)의 제 2 전송 시간(t2)은 제 1 전송 시간(t1)보다 길다. 제 2 데이터(DATA2)의 전송 시간을 제 1 전송 시간(t1)에서 제 2 전송 시간(t2)으로 늘리면, 그 만큼 피크 파워와 발열을 줄일 수 있다.
도 3 내지 도 5는 데이터 전송 속도를 느리게 함으로 피크 파워가 줄어드는 것을 보여주는 타이밍도이다. 도 4의 데이터 전송 속도는 도 3의 데이터 전송 속도보다 느리다. 즉, 도 3에서는 데이터가 고속(high speed)으로 전송되고, 도 4에서는 저속(low speed)으로 전송된다.
도 3을 참조하면, 호스트(1100)는 제 1 전송 시간(tTRN1) 동안 제 1 데이터(DATA1)를 전송한다. 제 1 데이터(DATA1)의 전송이 완료되면, 저장 장치(1200)는 불휘발성 메모리(1210)에 제 1 데이터(DATA1)를 프로그램한다. 불휘발성 메모리(1210)는 제 1 프로그램 시간(tPROG1) 동안에 제 1 데이터(DATA1)를 프로그램한다.
불휘발성 메모리(1210)가 제 1 데이터(DATA1)를 프로그램하는 동안에, 호스트(1100)는 제 2 데이터(DATA2)를 제 2 전송 시간(tTRN2) 동안 전송한다. 이와 같은 방식으로, 호스트(1100)는 제 3 전송 시간(tTRN3) 동안 제 3 데이터(DATA 3)를 전송하고, 제 4 전송 시간(tTRN4) 동안 제 4 데이터(DATA4)를 전송한다. 그리고 불휘발성 메모리(1210)는 제 2 프로그램 시간(tPROG2) 동안 제 2 데이터(DATA2)를 프로그램하고, 제 3 프로그램 시간(tPROG3) 동안 제 3 데이터(DATA 3)를 프로그램한다.
도 4를 참조하면, 호스트(1100)는 제 1 전송 시간(tTRN1) 동안 제 1 데이터(DATA1)를 전송하고, 제 2 전송 시간(tTRN2') 동안 제 2 데이터(DATA2)를 전송한다. 여기에서, 도 4의 제 2 전송 시간(tTRN2')은 도 3의 제 2 전송 시간(tTRN2)보다 길다. 즉, 도 4의 호스트(1100)가 제 2 데이터(DATA2)를 느리게 전송한다. 마찬가지로, 도 4의 제 3 및 제 4 전송 시간(tTRN3', tTRN4')은 도 3의 제 3 및 제 4 전송 시간(tTRN3, tTRN4)보다 길다.
도 5를 참조하면, 제 2 전송 시간(tTRN2') 동안 피크 파워(P2)는 제 2 전송 시간(tTRN2) 동안의 피크 파워(P1)보다 낮다. 데이터 전송 시간이 길어지거나 데이터 전송 속도가 느려지면 피크 파워는 줄어든다. 도 5에서는 피크 파워가 DIF(P1-P2)만큼 줄어든 것을 보여주고 있다.
다시 도 1을 참조하면, 본 발명의 실시 예에 따른 스토리지 시스템(1000)은 저장 장치(1200) 내의 불휘발성 메모리(1210)에 데이터를 프로그램하는 시간 동안에, 호스트(1100)로부터 저장 장치(1200)로의 데이터 전송 속도를 느리게 함으로, 피크 파워와 발열을 줄이고 전력 소모를 줄일 수 있다.
또한, 본 발명의 실시 예에 따른 스토리지 시스템(1000)은 호스트(1100)와 저장 장치(1200) 양쪽의 요구를 모두 만족하는 최대 전송 속도가 아니라, 실시간으로 주고 받는 데이터 전송량(amount of data transfer)에 맞게 데이터 전송 속도를 변경함으로 전력 소모를 줄일 수 있다.
도 6은 시간(time)에 따른 데이터 전송량(amount of data transfer)을 보여주는 그래프이다. 도 6을 참조하면, 속도 모드(speed mode)는 단위 시간 당 데이터 전송량에 따라 여러 구간으로 나눌 수 있다. 예를 들면, 속도 모드는 데이터 전송량에 따라 속도 모드(A), 속도 모드(B), 속도 모드(C)로 나누어질 수 있다.
도 1에 도시된 스토리지 시스템(1000)은 호스트(1100)와 저장 장치(1200) 사이에 데이터를 전송할 때, 속도 모드를 지원 가능한 최대 속도 모드로 설정할 수 있다. 도 6의 예의 경우에, 스토리지 시스템(1000)은 전체 시간(t0~t6) 동안, 속도 모드(C)를 사용하여 데이터를 전송할 수 있다. 이 경우에, 설정된 속도 모드(C)보다 데이터 전송량이 많이 낮으면, 스토리지 시스템(1000)은 데이터 전송 대역폭(data transfer bandwidth)의 손실(loss)을 입을 수 있다.
도 6을 참조하면, t0~t1 구간에서는 데이터 전송 속도가 속도 모드(A)로 설정되어도 충분하다. 그러나 t0~t1 구간에서, 속도 모드(A)가 설정되지 않고, 속도 모드(C)가 설정되어 있다. 마찬가지로, t1~t2, t3~t4, 그리고 t5~t6 구간에서는 속도 모드(B)가 설정되지 않고 속도 모드(C)가 설정되어 있다. 스토리지 시스템(1000)은 전 구간에서 속도 모드(C)로 설정되어 있기 때문에, 도 6의 빗금 친 부분만큼의 데이터 전송 대역폭 손실을 입을 수 있고, 전력을 불필요하게 소모할 수 있다.
도 1에 도시된 스토리지 시스템(1000)은 최대 속도 모드가 아닌 실제 데이터 전송량(amount of data transfer)에 맞게 속도 모드(speed mode)를 설정할 수 있다. 즉, 스토리지 시스템(1000)은 도 6의 t0~t1 구간에서는 속도 모드(A)로 설정하고, t1~t2 구간에서는 속도 모드(B)로 설정하고, t2~t3 구간에서는 속도 모드(C)로 설정할 수 있다. 마찬가지로, 스토리지 시스템(1000)은 t3~t4와 t5~t6 구간에서는 속도 모드(B)로 설정하고, t4~t5 구간에서는 속도 모드(C)로 설정할 수 있다.
본 발명의 실시 예에 따른 스토리지 시스템(1000)은 호스트(1000)와 저장 장치(1200) 양쪽의 요구를 모두 만족하는 최대 전송 속도가 아니라, 실제 데이터 전송량에 맞게 데이터 전송 속도를 변경함으로 전력 소모를 줄일 수 있다.
이하에서는 실제 데이터 전송량에 맞게 속도 모드를 변경하는 스토리지 시스템의 다양한 실시 예가 설명될 것이다. 특히, 플래시 메모리(flash memory)를 기반으로 하고, 스마트 폰과 같은 모바일 장치에 주로 사용되는 UFS(Universal Flash Storage) 시스템이 예로서 설명될 것이다.
도 7은 본 발명의 실시 예에 따른 UFS 시스템을 보여주는 블록도이다. 도 7을 참조하면, UFS 시스템(2000)은 UFS 호스트(2100)와 UFS 장치(2200)를 포함한다.
UFS 호스트(2100)는 애플리케이션(2110), 장치 드라이버(2120), 호스트 컨트롤러(2130), 그리고 버퍼 램(2140)을 포함한다. 그리고 호스트 컨트롤러(2130)는 명령 관리자(CMD manager, 2131), 호스트 DMA(2132), 그리고 전원 관리자(2133)를 포함한다.
UFS 호스트(2100)의 애플리케이션(2110)과 장치 드라이버(2120)에서 생성된 명령(예를 들면, 쓰기 명령)은 호스트 컨트롤러(2130)의 명령 관리자(2131)에 입력된다. 명령 관리자(2131)는 장치 드라이버(2120)로부터 입력된 명령을 이용하여 UFS 장치(2200)로 제공될 프로토콜(protocol) 또는 명령(command)으로 만든다. 명령 관리자(2131)에서 생성된 명령은 호스트 DMA(2132)로 제공된다. 호스트 DMA(2132)는 명령을 호스트 인터페이스(2101)를 통해 UFS 장치(2200)로 보낸다.
계속해서 도 7을 참조하면, UFS 장치(2200)는 플래시 메모리(2210), 장치 컨트롤러(2230), 그리고 버퍼 램(2240)을 포함한다. 그리고 장치 컨트롤러(2230)는 중앙처리장치(CPU, 2231), 장치 DMA(2232), 플래시 DMA(2233), 명령 관리자(CMD manager, 2234), 버퍼 관리자(2235), 플래시 변환 계층(FTL; Flash Translation Layer, 2236), 플래시 관리자(2237), 그리고 속도 모드 테이블(2238)을 포함한다.
UFS 호스트(2100)로부터 UFS 장치(2200)로 입력된 명령은 장치 인터페이스(2201)를 통해 장치 DMA(2232)로 제공된다. 장치 DMA(2232)는 입력된 명령을 명령 관리자(2234)로 제공한다. 명령 관리자(2234)는 버퍼 관리자(2235)를 통해 데이터를 입력받을 수 있도록 버퍼 램(2240)을 할당한다. 명령 관리자(2234)는 데이터 전송 준비가 완료되면, UFS 호스트(2100)로 RTT(READY_TO_TRANSFER) UPIU를 보낸다.
UFS 호스트(2100)는 RTT UPIU에 응답하여 데이터를 UFS 장치(2200)로 전송한다. 데이터는 호스트 DMA(2132)와 호스트 인터페이스(2101)를 통해 UFS 장치(2200)로 전송된다. UFS 장치(2200)는 제공받은 데이터를 장치 DMA(2232)와 버퍼 관리자(2235)를 통해 버퍼 램(2240)에 저장한다. 버퍼 램(2240)에 저장된 데이터는 플래시 DMA(2233)를 통해 플래시 관리자(2237)로 제공된다. 플래시 관리자(2237)는 플래시 변환 계층(2236)의 어드레스 맵핑 정보를 참조하여, 플래시 메모리(2210)의 선택된 주소에 데이터를 저장한다.
UFS 장치(2200)는 명령에 필요한 데이터 전송과 프로그램이 완료되면, 인터페이스를 통해 UFS 호스트(2100)로 응답 신호(response)를 보내고, 명령 완료를 알린다. UFS 호스트(2100)는 응답 신호를 전달받은 명령에 대한 완료 여부를 장치 드라이버(2120)와 애플리케이션(2110)에 알려주고, 해당 명령에 대한 동작을 종료한다.
도 7에 도시된 UFS 시스템(2000)은 실제 데이터 전송량에 맞게 속도 모드를 변경할 수 있다. 이를 위해 UFS 장치(2200)는 장치 DMA(2232)로 입력된 데이터의 전송량을 계산하고, 속도 모드 테이블(2238)을 이용하여 최적의 속도 모드와 효율적 전송 속도(efficient transfer speed)를 알아낸다. UFS 장치(2200)는 효율적 전송 속도를 UFS 호스트(2100)로 제공한다. UFS 호스트(2100)는 효율적 전송 속도에 맞게 인터페이스의 속도 모드를 변경한다.
도 8 내지 도 10은 도 7에 도시된 UFS 장치가 효율적 전송 속도(efficient transfer speed)를 계산하는 방법을 예시적으로 설명하기 위한 도면이다.
도 8을 참조하면, 장치 DMA(2232)는 수신 DMA 큐(DMA queue Rx, 221), 송신 DMA 큐(DMA queue Tx, 222), 그리고 DMA 관리자(223)를 포함한다.
수신 DMA 큐(221)는 호스트 인터페이스(2101)의 송신단(Tx)과 장치 인터페이스(2201)의 수신단(Rx)를 통해 입력된 데이터의 크기 정보를 순서대로 저장한다. 도 9의 예에서 보는 바와 같이, 수신 DMA 큐(221)에는 DMA Rx1부터 DMA RxN까지의 데이터 크기 정보가 저장될 수 있다. 예를 들면, DMA Rx1의 데이터 크기는 512KB이고, DMA Rx2의 데이터 크기는 256KB이고, DMA RxN의 데이터 크기는 512KB이다.
송신 DMA 큐(222)는 장치 인터페이스(2201)의 송신단(Tx)을 통해 호스트 인터페이스(2101)의 수신단(Rx)으로 전달될 데이터의 크기 정보를 순서대로 저장한다. 도 9의 예에서 보는 바와 같이, 송신 DMA 큐(222)에는 DMA Tx1부터 DMA TxN까지의 데이터 크기 정보가 저장될 수 있다. DMA Tx1의 데이터 크기는 128KB이고, DMA Tx2의 데이터 크기는 512KB이고, DMA TxN의 데이터 크기는 256KB이다.
DMA 관리자(223)는 수신 DMA 큐(221)의 DMA Rx1부터 DMA RxN까지의 데이터 크기를 합산하고, 수신한 데이터의 총량을 계산한다. 마찬가지로, DMA 관리자(223)는 송신 DMA 큐(222)의 DMA Tx1부터 DMA TxN까지의 데이터 크기를 합산하고, 송신할 데이터의 총량을 계산한다. DMA 관리자(223)는 수신 데이터 총량과 송신 데이터의 총량에 대한 정보를 CMD 관리자(2234)로 제공한다.
CMD 관리자(2234)는 장치 DMA(2232)에서 제공된 데이터 총량에 대한 정보와 속도 모드 테이블(2238)의 정보를 이용하여, 최적의 속도 모드와 효율적 전송 속도를 알아낸다.
도 10은 도 7에 도시된 속도 모드 테이블을 예시적으로 보여주는 테이블이다. 도 10을 참조하면, 속도 모드 테이블(2238)에는 속도 모드(speed mode)와 효율적 전송 속도(efficient transfer speed)가 기록되어 있다. 예를 들어, 수신 또는 송신 데이터의 총량이 128MB 보다 작으면, 속도 모드는 A이고, 효율적 전송 속도는 1.5Gbps일 것이다. 데이터 총량이 128MB와 256MB 사이이면, 속도 모드는 B이고, 효율적 전송 속도는 3Gbps일 것이다. 그리고 데이터 총량이 256MB와 512MB 사이이면, 속도 모드는 C이고, 효율적 전송 속도는 6Gbps일 것이다.
다시 도 7을 참조하면, UFS 장치(2200)는 데이터 총량을 통해 계산한 효율적 전송 속도를 UFS 호스트(2100)로 제공한다. 구체적으로, 장치 컨트롤러(2230)의 CMD 관리자(2234)는 효율적 전송 속도를 RTT UPIU, DATA IN UPIU 또는 RESPONSE UPIU 등을 이용하여 호스트 컨트롤러(2130)로 제공할 수 있다. 장치 컨트롤러(2230)는 RTT UPIU, DATA IN UPIU 또는 RESPONSE UPIU를 보낼 때마다 효율적 전송 속도를 보낼 수 있다. 효율적 전송 속도를 보내는 횟수가 많아질수록 데이터 전송 대역폭 손실과 전력 소모가 줄어들 수 있다.
호스트 컨트롤러(2130)의 호스트 DMA(2132)는 효율적 전송 속도를 포함하는 RTT UPIU, DATA IN UPIU 또는 RESPONSE UPIU를 입력받고, CMD 관리자(2131)로 제공한다. CMD 관리자(2131)는 RTT UPIU, DATA IN UPIU 또는 RESPONSE UPIU를 분석하고(parsing) 효율적 전송 속도를 알아낸다. CMD 관리자(2131)는 장치 드라이버(2120)로 효율적 전송 속도를 제공한다.
장치 드라이버(2120)는 효율적 전송 속도에 근거하여, 호스트 컨트롤러(2130)로 속도 모드 변경 명령을 제공한다. 호스트 컨트롤러(2130)는 속도 모드 변경 명령을 입력받고, 호스트 인터페이스(2101)와 장치 인터페이스(2201)의 데이터 전송 속도를 변경한다.
도 11은 도 7에 도시된 UFS 호스트가 데이터 전송 속도를 변경하는 방법을 설명하기 위한 블록도이다. 도 11을 참조하면, 장치 드라이버(2120)는 UIC CMD(UFS Interconnect Layer command)를 호스트 컨트롤러 인터페이스(HCI; Host Controller Interface, 2135)로 제공한다. UIC 명령에는 인터페이스의 속도 모드를 변경하기 위한 명령이 포함되어 있다. 호스트 컨트롤러 인터페이스(2135)는 Host Controller Capabilities, Interrupt and Host Status, …, UIC Command Register, 그리고 Vender Specific으로 구성된다.
UIC 명령은 UIC Command Register로 제공된다. 호스트 컨트롤러(2130)는 UIC Attributes를 설정함으로써 데이터 전송 속도를 조절할 수 있다. UIC Command Register를 설정함으로, 호스트 컨트롤러(2130)는 호스트 인터페이스(2101)와 장치 인터페이스(2201)의 데이터 전송 속도를 효율적 전송 속도로 변경할 수 있다.
호스트 인터페이스(2101)와 장치 인터페이스(2201)는 UFS Interconnect Layer(UIC)로, Link Layer와 PHY Layer로 구성된다. Link Layer는 MIPI UniPro라고 하며 PHY Layer를 통해 입력되는 데이터나 신호의 유효 여부를 검사한다. Link Layer는 입력된 데이터가 유효하지 않으면 UFS 호스트(2100)나 UFS 장치(2200)로 데이터를 다시 요청할 수 있고, 유효하면 승인 신호(ACK)를 보낸다. PHY Layer는 MIPI M-PHY라고 하며 송신단(Tx)과 수신단(Rx)으로 구성된다.
도 12는 본 발명의 실시 예에 따른 스토리지 시스템의 데이터 전송 속도 변경 방법을 보여주는 순서도이다. 이하에서는 도 7에 도시된 UFS 시스템(2000)의 데이터 전송 속도 변경 방법이 상세하게 설명될 것이다.
S110 단계에서, 장치 DMA(2232)의 데이터 총량을 계산한다. 도 8을 참조하면, DMA 관리자(223)는 수신 DMA 큐(221) 및 송신 DMA 큐(222)의 데이터 크기를 합산하고 데이터의 총량을 계산한다. DMA 관리자(223)는 수신 데이터 총량과 송신 데이터의 총량에 대한 정보를 CMD 관리자(2234)로 제공한다.
S120 단계에서, 속도 모드 테이블(2238)을 참조하여 효율적 전송 속도(efficient transfer speed)를 계산한다. 도 8을 참조하면, CMD 관리자(2234)는 장치 DMA(2232)에서 제공된 데이터 총량에 대한 정보와 속도 모드 테이블(2238)의 정보를 이용하여 효율적 전송 속도를 계산한다.
S130 단계에서, UFS 장치(2200)로부터 UFS 호스트(2100)로 효율적 전송 속도 정보를 보낸다. UFS 장치(2200)는 효율적 전송 속도 정보를 RTT UPIU 또는 DATA IN UPIU 등을 이용하여 UFS 호스트(2100)로 제공할 수 있다.
S140 단계에서, UFS 호스트(2100)는 UFS 장치(2200)로부터 제공받은 효율적 전송 속도로 데이터 전송 속도를 변경하도록 장치 드라이버(2120)에게 요청한다.
S150 단계에서, 장치 드라이버(2120)는 호스트 컨트롤러(2130)에게 호스트 인터페이스(2101)와 장치 인터페이스(2201)의 데이터 전송 속도를 변경하라는 명령을 내린다. 호스트 컨트롤러(2130)는 속도 변경 명령에 따라, 인터페이스의 데이터 전송 속도를 변경한다.
S160 단계에서, UFS 호스트(2100)와 UFS 장치(2200)는 변경된 속도로 데이터를 주고 받는다.
도 7에 도시된 UFS 시스템(2000)은 UFS 장치(2200)에서 계산한 데이터 전송량(amount of data transfer)을 근거로 하여, 호스트 인터페이스(2101)와 장치 인터페이스(2201)의 속도 모드를 변경할 수 있다. 본 발명은 최대 속도 모드가 아닌 실제 데이터 전송량(amount of data transfer)에 맞게 속도 모드(speed mode)를 변경함으로, 데이터 전송 대역폭 손실과 불필요한 전력 소비를 줄일 수 있다.
도 13은 시간(time)에 따른 데이터 전송량(amount of data transfer)을 보여주는 그래프로, 속도 모드 변경이 자주 발생하는 예를 보여준다. 앞에서 설명한 바와 같이, 본 발명에 따른 스토리지 시스템(도 1 참조, 1000)은 최대 속도 모드가 아닌 실제 데이터 전송량(amount of data transfer)에 맞게 속도 모드(speed mode)를 변경할 수 있다.
도 13을 참조하면, 본 발명에 따른 스토리지 시스템(1000)은 ta~tf 구간에서 속도 모드 변경이 자주 발생할 수 있다. 도 13에서, a~f는 속도 모드가 (B)에서 (C)로 변경되는 부분을 표시한 것이다. 데이터 전송량이 속도 모드 경계에서 자주 변하는 경우에, 빈번한 속도 모드 변경으로 인해 스토리지 시스템(1000)의 성능이 저하될 수 있다.
본 발명의 실시 예에 따른 스토리지 시스템(1000)은 빈번한 속도 모드 변경 문제를 해결하기 위해, 속도 모드에 여유분(margin)을 두고 속도 모드를 변경할 수 있다. 도 13을 참조하면, 스토리지 시스템(1000)은 속도 모드 (B)로부터 여유분(margin)을 넘은 경우에 속도 모드(C)로 변경할 수 있다.
또한, 본 발명의 실시 예에 따른 스토리지 시스템(1000)은 N번 반복되는 경우에 속도 모드를 변경할 수 있다. 예를 들면, 스토리지 시스템(1000)은 3번 속도 모드가 변경되면, 속도 모드(C)로 변경할 수 있다. 이 경우에, 속도 모드는 도 13의 d 지점에서 속도 모드(C)로 변경될 것이다.
본 발명의 실시 예에 따른 스토리지 시스템(1000)은 속도 모드에 여유분(margin)을 두거나 속도 모드의 변경 회수를 고려함으로, 빈번한 속도 모드 변경으로 인해 시스템의 성능이 저하되는 문제를 해결할 수 있다.
도 14는 본 발명의 실시 예에 따른 스토리지 시스템의 데이터 전송 대역폭(data transfer bandwidth)의 이득(gain)을 보여주는 그래프이다.
도 14를 참조하면, t0~t1 구간에서는 속도 모드(A)가 설정되고, t1~t2, t3~t4, 그리고 t5~t6 구간에서는 속도 모드(B)가 설정된다. 스토리지 시스템(1000)은 전 구간에서 속도 모드(C)로 설정되지 않기 때문에, 도 14의 빗금 친 부분만큼의 데이터 전송 대역폭 이득을 얻을 수 있고, 전력 소모를 줄일 수 있다.
계속해서 도 14를 참조하면, t1에서 속도 모드를 계산한다. 그리고 t1~t2 구간에서는 속도 모드를 4번 계산하고, t2~t3 구간에서는 8번 계산하고, t3~t4 구간에서는 6번 계산하고, t4~t5 구간에서는 2번 계산하며, t5~t6 구간에서는 3번 계산한다. 속도 모드를 계산하는 시간 간격이 좁을수록, 더 많은 데이터 전송 대역폭 이득을 얻을 수 있다.
본 발명의 실시 예에 따른 UFS 시스템(2000)은 데이터 전송 대역폭의 이득을 높이기 위해, UFS 장치(2200)로부터 UFS 호스트(2100)로 자주 제공되는 신호를 이용하여 효율적 전송 속도 정보를 제공할 수 있다. 예를 들면, 도 7에 도시된 UFS 시스템(2000)은 응답 신호(response)보다는 RTT UPIU , DATA IN UPIU 또는 RESPONSE UPIU 신호를 이용하여 효율적 전송 속도 정보를 UFS 호스트(2100)로 제공함으로, 데이터 전송 대역폭 이득을 높일 수 있다.
한편, 본 발명의 실시 예에 따른 스토리지 시스템은 레인(lane) 수를 변경함으로 데이터 전송 속도를 변경할 수 있다. 여기에서, 레인(lane)이란 송신단(Rx)과 수신단(Tx)을 가지고 독립적으로 데이터를 전송할 수 있는 단위를 말한다. 도 8은 하나의 레인으로 연결되는 UFS 시스템을 보여준다.
스토리지 시스템은 멀티-레인(multi-lane)을 가질 수 있다. 스토리지 시스템은 멀티-레인을 통해 데이터를 전송할 때, 복수의 레인을 독립적으로 분할하여 데이터를 전송한다. 멀티-레인을 지원하는 스토리지 시스템에서는 단일-레인의 데이터 전송 속도를 변경함으로 전력 소모를 줄일 수 있지만, 활성화되는 레인의 수를 변경함으로 전력 소모를 줄일 수도 있다.
한편, 본 발명의 상세한 설명에서는 구체적인 실시 예에 관하여 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능함은 물론이다. 예를 들어, 본 발명의 범위는 플래시 메모리 장치에 한정되지 않는다. 본 발명은 변환 계층에 의한 어드레스 변환이 사용되는 모든 저장 장치에 적용될 수 있다. 그러므로 본 발명의 범위는 상술한 실시 예에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 한다.
1000, 2000: 스토리지 시스템
1100, 2100: 호스트, UFS 호스트
1110, 2110: 애플리케이션
1120, 2120: 장치 드라이버
1130, 2130: 호스트 컨트롤러
1140, 2140: 버퍼 메모리, 버퍼 램
1200, 2200: 저장 장치, UFS 장치
1210, 2210: 불휘발성 메모리, 플래시 메모리
1230, 2230: 장치 컨트롤러
1240, 2240: 버퍼 메모리, 버퍼 램
1100, 2100: 호스트, UFS 호스트
1110, 2110: 애플리케이션
1120, 2120: 장치 드라이버
1130, 2130: 호스트 컨트롤러
1140, 2140: 버퍼 메모리, 버퍼 램
1200, 2200: 저장 장치, UFS 장치
1210, 2210: 불휘발성 메모리, 플래시 메모리
1230, 2230: 장치 컨트롤러
1240, 2240: 버퍼 메모리, 버퍼 램
Claims (20)
- DMA 큐에 입력된 데이터 크기 정보를 통해 데이터 전송량을 계산하는 장치 DMA;
상기 장치 DMA로부터 데이터 전송량을 입력받고, 속도 모드 테이블을 이용하여 효율적 전송 속도를 계산하는 CMD 관리자; 및
효율적 전송 속도 정보를 호스트로 전송하기 위한 장치 인터페이스를 포함하되,
상기 장치 DMA는 상기 장치 인터페이스를 통해 입력되는 수신 데이터의 크기 정보를 이용하여 수신 데이터 전송량을 계산하고, 상기 장치 인터페이스를 통해 상기 호스트로 전송될 송신 데이터의 크기 정보를 이용하여 송신 데이터 전송량을 계산하는 스토리지 시스템의 저장 장치. - 삭제
- 제 1 항에 있어서,
상기 장치 DMA는, 상기 장치 인터페이스를 통해 입력되는 수신 데이터의 크기 정보를 저장하는 수신 DMA 큐;
상기 장치 인터페이스를 통해 상기 호스트로 전송될 송신 데이터의 크기 정보를 저장하는 송신 DMA 큐; 및
상기 수신 DMA 큐로부터 수신 데이터 전송량을 계산하고 상기 송신 DMA 큐로부터 송신 데이터 전송량을 계산하고, 상기 수신 데이터 전송량과 상기 송신 데이터 전송량을 상기 CMD 관리자로 제공하는 DMA 관리자를 포함하는 스토리지 시스템의 저장 장치. - 제 1 항에 있어서,
상기 호스트는 효율적 전송 속도 정보를 입력받고, 상기 호스트의 인터페이스와 상기 저장 장치의 인터페이스의 속도 모드를 변경하는 스토리지 시스템의 저장 장치. - 제 1 항에 있어서,
상기 CMD 관리자는 속도 모드 경계에서 빈번한 속도 모드 변경을 방지하기 위해, 속도 모드에 여유분(margin)을 두고 속도 모드의 여유분을 넘을 때 속도 모드를 변경하는 스토리지 시스템의 저장 장치. - 제 1 항에 있어서,
상기 CMD 관리자는 속도 모드 경계에서 빈번한 속도 모드 변경을 방지하기 위해, 소정의 속도 모드 변경 회수에 도달할 때 속도 모드를 변경하는 스토리지 시스템의 저장 장치. - 플래시 메모리를 기반으로 하는 UFS 장치; 및
인터페이스를 통해 상기 UFS 장치와 연결되고 상기 UFS 장치로부터 입력된 효율적 전송 속도 정보를 이용하여 데이터 전송 속도를 변경하는 UFS 호스트를 포함하되,
상기 UFS 장치는 데이터 전송량을 통해 효율적 전송 속도를 계산하고, 효율적 전송 속도 정보를 상기 UFS 호스트로 전송하되,
상기 UFS 장치는:
장치 인터페이스를 통해 입력되는 수신 데이터의 크기 정보를 이용하여 수신 데이터 전송량을 계산하고, 상기 장치 인터페이스를 통해 상기 UFS 호스트로 전송될 송신 데이터의 크기 정보를 이용하여 송신 데이터 전송량을 계산하는 장치 DMA; 및
상기 장치 DMA로부터 데이터 전송량을 입력받고, 속도 모드 테이블을 이용하여 효율적 전송 속도를 계산하는 CMD 관리자를 포함하는 UFS 시스템. - 삭제
- 삭제
- 제 7 항에 있어서,
상기 장치 DMA는,
상기 장치 인터페이스를 통해 입력되는 수신 데이터의 크기 정보를 저장하는 수신 DMA 큐;
상기 장치 인터페이스를 통해 상기 호스트로 전송될 송신 데이터의 크기 정보를 저장하는 송신 DMA 큐; 및
상기 수신 DMA 큐로부터 수신 데이터 전송량을 계산하고 상기 송신 DMA 큐로부터 송신 데이터 전송량을 계산하고, 상기 수신 데이터 전송량과 상기 송신 데이터 전송량을 상기 CMD 관리자로 제공하는 DMA 관리자를 포함하는 UFS 시스템. - 제 10 항에 있어서,
상기 CMD 관리자는 속도 모드 경계에서 빈번한 속도 모드 변경을 방지하기 위해, 속도 모드에 여유분(margin)을 두고 속도 모드의 여유분을 넘을 때 속도 모드를 변경하는 UFS 시스템. - 제 10 항에 있어서,
상기 CMD 관리자는 속도 모드 경계에서 빈번한 속도 모드 변경을 방지하기 위해, 소정의 속도 모드 변경 회수에 도달할 때 속도 모드를 변경하는 UFS 시스템. - 제 7 항에 있어서,
상기 UFS 호스트는 효율적 전송 속도 정보를 입력받고, 호스트 인터페이스와 장치 인터페이스의 속도 모드를 변경하는 UFS 시스템. - 제 13 항에 있어서,
상기 UFS 장치는 RTT UPIU, DATA IN UPIU 또는 RESPONSE UPIU를 이용하여 효율적 전송 속도 정보를 상기 UFS 호스트로 제공하는 UFS 시스템. - 제 14 항에 있어서,
상기 UFS 호스트는, 상기 호스트 인터페이스를 통해 RTT UPIU, DATA IN UPIU 또는 RESPONSE UPIU를 입력 받는 호스트 DMA; 및
상기 호스트 DMA로부터 입력된 RTT UPIU, DATA IN UPIU 또는 RESPONSE UPIU를 분석하고(parsing), 효율적 전송 속도 정보를 알아내는 CMD 관리자를 포함하는 UFS 시스템. - 제 15 항에 있어서,
상기 UFS 호스트는, 상기 CMD 관리자로부터 효율적 전송 속도 정보를 입력받고 속도 모드 변경 명령을 내리는 장치 드라이버; 및
상기 속도 모드 변경 명령을 입력받고 상기 호스트 인터페이스와 상기 장치 인터페이스의 속도 모드를 변경하는 호스트 컨트롤러 인터페이스를 더 포함하는 UFS 시스템. - 호스트와 저장 장치를 포함하는 스토리지 시스템의 데이터 전송 속도를 변경하는 방법에 있어서:
상기 저장 장치 내에서 상기 저장 장치로 수신된 수신 데이터의 크기 정보 및 상기 호스트로 송신될 송신 데이터의 크기 정보를 이용하여 데이터 전송량을 계산하는 단계;
상기 데이터 전송량을 입력받고, 속도 모드 테이블을 참조하여 효율적 전송 속도를 계산하는 단계;
효율적 전송 속도 정보를 상기 저장 장치로부터 상기 호스트로 제공하는 단계;
상기 저장 장치로부터 받은 효율적 전송 속도로 데이터 전송 속도를 변경하도록 장치 드라이버에게 요청하는 단계; 및
상기 장치 드라이버의 전송 모드 변경 명령에 응답하여 인터페이스의 데이터 전송 속도를 변경하는 단계를 포함하는 데이터 전송 속도 변경 방법. - 제 17 항에 있어서,
상기 데이터 전송량을 계산하는 단계에서, 상기 수신 데이터의 상기 크기 정보에 기초하여 수신 데이터 전송량을 계산하고, 상기 송신 데이터의 상기 크기 정보에 기초하여 송신 데이터 전송량을 계산하는 데이터 전송 속도 변경 방법. - 제 18 항에 있어서,
상기 데이터 전송 속도를 변경하는 단계에서, 속도 모드 경계에서 빈번한 속도 모드 변경을 방지하기 위해 속도 모드에 여유분(margin)을 두고 속도 모드의 여유분을 넘을 때 속도 모드를 변경하는 데이터 전송 속도 변경 방법. - 제 18 항에 있어서,
상기 데이터 전송 속도를 변경하는 단계에서, 속도 모드 경계에서 빈번한 속도 모드 변경을 방지하기 위해, 소정의 속도 모드 변경 회수에 도달할 때 속도 모드를 변경하는 데이터 전송 속도 변경 방법.
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020130088109A KR102145420B1 (ko) | 2013-07-25 | 2013-07-25 | 데이터 전송 속도를 변경하는 스토리지 시스템 및 그것의 데이터 전송 속도 변경 방법 |
US14/325,732 US9477620B2 (en) | 2013-07-25 | 2014-07-08 | Storage system for changing a data transfer speed and a method of changing the data transfer speed thereof |
TW103124065A TWI620186B (zh) | 2013-07-25 | 2014-07-14 | 儲存裝置、通用快閃儲存器系統及其改變資料轉移速度的方法 |
CN201410355607.1A CN104346421B (zh) | 2013-07-25 | 2014-07-24 | 改变数据传送速度的存储***和改变数据传送速度的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020130088109A KR102145420B1 (ko) | 2013-07-25 | 2013-07-25 | 데이터 전송 속도를 변경하는 스토리지 시스템 및 그것의 데이터 전송 속도 변경 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20150012518A KR20150012518A (ko) | 2015-02-04 |
KR102145420B1 true KR102145420B1 (ko) | 2020-08-18 |
Family
ID=52391458
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020130088109A KR102145420B1 (ko) | 2013-07-25 | 2013-07-25 | 데이터 전송 속도를 변경하는 스토리지 시스템 및 그것의 데이터 전송 속도 변경 방법 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9477620B2 (ko) |
KR (1) | KR102145420B1 (ko) |
CN (1) | CN104346421B (ko) |
TW (1) | TWI620186B (ko) |
Families Citing this family (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20150112075A (ko) * | 2014-03-26 | 2015-10-07 | 삼성전자주식회사 | 스토리지 장치 및 스토리지 장치의 동작 방법 |
KR102371557B1 (ko) * | 2015-03-20 | 2022-03-07 | 삼성전자주식회사 | 호스트 장치, 그것과 복수의 장치들을 갖는 호스트 시스템 및 그것의 인터페이스 링크 레이어 구성 방법 |
KR102498223B1 (ko) * | 2015-10-13 | 2023-02-09 | 삼성전자주식회사 | Ufs 장치의 작동 방법, ufs 호스트의 작동 방법, 및 이들을 포함하는 시스템의 작동 방법 |
US12001676B2 (en) | 2016-09-01 | 2024-06-04 | Samsung Electronics Co., Ltd. | Storage device and host for the same |
US10969960B2 (en) | 2016-09-01 | 2021-04-06 | Samsung Electronics Co., Ltd. | Storage device and host for the same |
CN108170370B (zh) * | 2016-12-07 | 2021-01-26 | 慧荣科技股份有限公司 | 数据储存装置与数据传输速率控制方法 |
US10635154B2 (en) * | 2016-12-19 | 2020-04-28 | Western Digital Technologies, Inc. | Intelligent SAS phy power management |
US10318175B2 (en) * | 2017-03-07 | 2019-06-11 | Samsung Electronics Co., Ltd. | SSD with heterogeneous NVM types |
US10848263B2 (en) | 2017-06-30 | 2020-11-24 | Silicon Motion, Inc. | Methods for reducing data errors in transceiving of a flash storage interface and apparatuses using the same |
US10630424B2 (en) | 2017-06-30 | 2020-04-21 | Silicon Motion, Inc. | Methods for reducing data errors in transceiving of a flash storage interface and apparatuses using the same |
CN109213436B (zh) | 2017-06-30 | 2021-08-24 | 慧荣科技股份有限公司 | 降低快闪储存介面中传收数据错误方法及装置 |
US10637509B2 (en) * | 2017-06-30 | 2020-04-28 | Silicon Motion, Inc. | Methods for reducing data errors in transceiving of a flash storage interface and apparatuses using the same |
KR102535243B1 (ko) * | 2017-12-18 | 2023-05-23 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작 방법 |
JP6983670B2 (ja) * | 2018-01-15 | 2021-12-17 | キオクシア株式会社 | 情報処理装置およびストレージデバイス |
US10769079B2 (en) | 2018-03-27 | 2020-09-08 | Qualcomm Incorporated | Effective gear-shifting by queue based implementation |
CN108958950A (zh) | 2018-05-29 | 2018-12-07 | 联发科技(新加坡)私人有限公司 | 电子存储设备的任务管理方法、主机和存储装置 |
US10719647B2 (en) | 2018-06-07 | 2020-07-21 | Synopsys, Inc. | Speed converter for FPGA-based UFS prototypes |
WO2020024151A1 (zh) | 2018-08-01 | 2020-02-06 | 华为技术有限公司 | 信息处理方法及装置、设备、*** |
EP3611722A1 (en) | 2018-08-13 | 2020-02-19 | Axis AB | Controller and method for reducing a peak power consumption of a video image processing pipeline |
KR20200124937A (ko) * | 2019-04-25 | 2020-11-04 | 에스케이하이닉스 주식회사 | 컨트롤러 및 그것의 동작방법 |
US11269524B2 (en) | 2019-10-07 | 2022-03-08 | Samsung Electronics Co., Ltd. | Methods and systems for managing data transfer between a UFS host and a UFS target |
KR20220046948A (ko) | 2020-10-08 | 2022-04-15 | 삼성전자주식회사 | 스토리지 컨트롤러, 스토리지 시스템 및 그 동작방법 |
EP4002133B1 (en) * | 2020-11-20 | 2024-03-20 | Samsung Electronics Co., Ltd. | Performing save state switching in selective lanes between electronic devices in ufs system |
KR20220093983A (ko) * | 2020-12-28 | 2022-07-05 | 삼성전자주식회사 | 데이터 전송률을 조정하는 스토리지 장치 및 이를 포함하는 스토리지 시스템 |
US11886702B2 (en) | 2021-02-03 | 2024-01-30 | Micron Technology, Inc. | Speed bins to support memory compatibility |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060168310A1 (en) * | 2004-12-03 | 2006-07-27 | Fujitsu Limited | Data communication system capable of adjusting transmission speeds |
US20060224785A1 (en) * | 2005-03-31 | 2006-10-05 | Fujitsu Limited | Device and method for input and output of data |
US20120166681A1 (en) * | 2010-12-22 | 2012-06-28 | Sony Corporation | Information processing device, information processing system, information processing method, and program |
JP2013140530A (ja) | 2012-01-06 | 2013-07-18 | Internatl Business Mach Corp <Ibm> | 分散計算方法、プログラム、ホストコンピュータおよび分散計算システム(アクセラレータ装置を用いた分散並列計算) |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0675785A (ja) * | 1992-06-29 | 1994-03-18 | Fujitsu Ltd | プレステージング処理方法、バッファ管理方法及びファイルシステム |
US6275896B1 (en) * | 1996-11-27 | 2001-08-14 | Sony Corporation | Data transfer apparatus and method of the same and data input and output controlling apparatus and method of same |
JP3868250B2 (ja) * | 2001-10-09 | 2007-01-17 | 松下電器産業株式会社 | データ転送装置、データ転送システム、およびデータ転送方法 |
JP2003256355A (ja) | 2002-02-27 | 2003-09-12 | Canon Inc | Dma制御装置、印刷装置、及びdma制御方法 |
WO2004102558A2 (en) | 2003-05-19 | 2004-11-25 | Koninklijke Philips Electronics N.V. | Method for setting data carrier speed in a data carrier drive apparatus |
DE602004009063T2 (de) | 2003-05-19 | 2008-06-12 | Koninklijke Philips Electronics N.V. | Verfahren zum einstellen der datenträger-geschwindigkeit in einem datenträger-laufwerk |
TW200604810A (en) | 2004-02-20 | 2006-02-01 | Renesas Tech Corp | Nonvolatile memory and data processing system |
KR100606577B1 (ko) | 2004-07-29 | 2006-07-28 | 삼성전자주식회사 | 직렬 에이티에이 인터페이스의 데이터 전송속도 조절장치및 그 방법 |
US7461183B2 (en) * | 2004-08-03 | 2008-12-02 | Lsi Corporation | Method of processing a context for execution |
JP2006195569A (ja) | 2005-01-11 | 2006-07-27 | Sony Corp | 記憶装置 |
US7634585B2 (en) | 2005-11-04 | 2009-12-15 | Sandisk Corporation | In-line cache using nonvolatile memory between host and disk device |
US7573940B2 (en) | 2005-12-07 | 2009-08-11 | Intel Corporation | Data transmission at energy efficient rates |
JP4391548B2 (ja) | 2007-04-20 | 2009-12-24 | 株式会社メディアロジック | デバイスドライバ |
KR100952947B1 (ko) | 2008-12-12 | 2010-04-15 | 주식회사 히타치엘지 데이터 스토리지 코리아 | 광 디스크 장치에서 속도 조절 방법 |
US8478928B2 (en) * | 2009-04-23 | 2013-07-02 | Samsung Electronics Co., Ltd. | Data storage device and information processing system incorporating data storage device |
CN101634975B (zh) * | 2009-08-20 | 2011-09-14 | 广东威创视讯科技股份有限公司 | 一种实现dma数据传输的方法及装置 |
JP2012234428A (ja) | 2011-05-06 | 2012-11-29 | Nec Saitama Ltd | メモリ制御装置、メモリ制御方法、プログラム |
JP2012252485A (ja) | 2011-06-02 | 2012-12-20 | Nec Corp | 記憶制御装置、及び、記憶制御方法 |
US8879571B2 (en) * | 2011-11-01 | 2014-11-04 | Hewlett-Packard Development Company, L.P. | Delays based on packet sizes |
TW201321994A (zh) | 2011-11-18 | 2013-06-01 | 威剛科技股份有限公司 | 行動儲存裝置及動態調整其工作模式之方法 |
-
2013
- 2013-07-25 KR KR1020130088109A patent/KR102145420B1/ko active IP Right Grant
-
2014
- 2014-07-08 US US14/325,732 patent/US9477620B2/en active Active
- 2014-07-14 TW TW103124065A patent/TWI620186B/zh active
- 2014-07-24 CN CN201410355607.1A patent/CN104346421B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060168310A1 (en) * | 2004-12-03 | 2006-07-27 | Fujitsu Limited | Data communication system capable of adjusting transmission speeds |
US20060224785A1 (en) * | 2005-03-31 | 2006-10-05 | Fujitsu Limited | Device and method for input and output of data |
US20120166681A1 (en) * | 2010-12-22 | 2012-06-28 | Sony Corporation | Information processing device, information processing system, information processing method, and program |
JP2013140530A (ja) | 2012-01-06 | 2013-07-18 | Internatl Business Mach Corp <Ibm> | 分散計算方法、プログラム、ホストコンピュータおよび分散計算システム(アクセラレータ装置を用いた分散並列計算) |
Also Published As
Publication number | Publication date |
---|---|
TWI620186B (zh) | 2018-04-01 |
KR20150012518A (ko) | 2015-02-04 |
TW201511008A (zh) | 2015-03-16 |
CN104346421A (zh) | 2015-02-11 |
CN104346421B (zh) | 2019-04-26 |
US9477620B2 (en) | 2016-10-25 |
US20150032913A1 (en) | 2015-01-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102145420B1 (ko) | 데이터 전송 속도를 변경하는 스토리지 시스템 및 그것의 데이터 전송 속도 변경 방법 | |
KR102094902B1 (ko) | 액티브 상태에서 인터페이스 모드를 전환하는 스토리지 시스템 및 ufs 시스템 | |
KR20150014002A (ko) | 데이터 전송 속도 관리자를 포함하는 스토리지 시스템 및 그것의 데이터 전송 속도 변경 방법 | |
US10459844B2 (en) | Managing flash memory read operations | |
EP2715729B1 (en) | Apparatus including memory system controllers and related methods | |
US10671141B2 (en) | Storage device and method of controlling link state thereof | |
KR20160049200A (ko) | 데이터 저장 장치의 작동 방법, 이를 포함하는 모바일 컴퓨팅 장치, 및 이의 작동 방법 | |
US20190278485A1 (en) | Adaptive transaction layer packet for latency balancing | |
US10740000B2 (en) | Adaptive transaction layer packet for latency balancing | |
KR20140067405A (ko) | 저장 장치 및 그것의 데이터 전송 방법 | |
US20170212579A1 (en) | Storage Device With Power Management Throttling | |
US20140244904A1 (en) | Memory device and computer system | |
KR20110046232A (ko) | 데이터 무효화 동작을 수행하는 저장 장치 및 그것의 데이터 무효화 방법 | |
US11010095B2 (en) | Dynamic and adaptive data read request scheduling | |
US11989444B2 (en) | Memory controller | |
KR102100707B1 (ko) | 데이터 저장 장치 | |
TWI760403B (zh) | 資料儲存裝置及其操作方法 | |
US11455186B2 (en) | Controller and memory system having the same | |
US11132308B2 (en) | Semiconductor device and semiconductor system | |
KR102108374B1 (ko) | 스토리지 시스템 및 그것의 비신호 분석 방법 | |
CN102236625A (zh) | 一种可同时进行读写操作的多通道NANDflash控制器 | |
US10216421B2 (en) | Method of operating storage device using serial interface and method of operating data processing system including the same | |
KR20190099879A (ko) | 메모리 컨트롤러 및 그 동작 방법 | |
KR20220069793A (ko) | PCIe TLP 합체에 의한 유효한 PCIe 활용 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E90F | Notification of reason for final refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |