KR20140145525A - 통합 캐시를 하나 또는 복수의 논리 유닛에 동적 할당하는 시스템 및 방법 - Google Patents

통합 캐시를 하나 또는 복수의 논리 유닛에 동적 할당하는 시스템 및 방법 Download PDF

Info

Publication number
KR20140145525A
KR20140145525A KR20130138458A KR20130138458A KR20140145525A KR 20140145525 A KR20140145525 A KR 20140145525A KR 20130138458 A KR20130138458 A KR 20130138458A KR 20130138458 A KR20130138458 A KR 20130138458A KR 20140145525 A KR20140145525 A KR 20140145525A
Authority
KR
South Korea
Prior art keywords
cache
slot
module
logical unit
entry
Prior art date
Application number
KR20130138458A
Other languages
English (en)
Other versions
KR102149468B1 (ko
Inventor
아메드 너와브 알리 임티아즈
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to US14/274,815 priority Critical patent/US9396128B2/en
Publication of KR20140145525A publication Critical patent/KR20140145525A/ko
Application granted granted Critical
Publication of KR102149468B1 publication Critical patent/KR102149468B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

하나 또는 복수의 논리 유닛들(LUs)에 동적으로 할당될 수 있는SCSI 장치의 통합 캐시를 제공하는 및 방법이 개시된다. SCSI장치의 캐시 밸런서 모듈은 상기 전체 통합 캐시를 하나의 논리 유닛(LU) 또는 나누어진 복수의 논리 유닛들(LUs) 사이에 할당할 수 있다. 각각의 논리 유닛(LU)의 상기 캐시 엔트리는 각각의 논리 유닛(LU)의 QoS트래픽 클래스(traffic class)에 기초하여 더 분류할 수 있다. 이에 따라, QoS성능을 향상시킬 수 있다. 본 발명의 시스템은 각각의 논리 유닛(LU)의 통합 캐시 할당 상태를 유지하는 각각의 논리 유닛(LU)의 캐시 할당 테이블을 제공한다. 또한 본 발명의 시스템은 증가된 캐시적중률(cache hits)과 낮은 캐시 미스(cache miss)를 제공하여, 캐시 성능을 향상시키고, 효과적으로 시스템 성능을 향상시킨다.

Description

통합 캐시를 하나 또는 복수의 논리 유닛에 동적 할당하는 시스템 및 방법 {System and method for dynamic allocation of unified cache to one or more Logical Units}
본 발명은 데이터 저장 시스템에 관한 것으로 상세하게는 SCSI(Small System Computer Interface) 데이터 저장 시스템의 하나 또는 복수의 논리 유닛들(Logical Units, LUs)에 대한 캐시의 동적 할당에 관한 것이다.
정보 고속도로의 세계에서, 데이터 저장 시스템은 사용자가 필요할 때마다 데이터를 가공, 편집, 저장 및/또는 전달한다. 효과적이고 효율적인 데이터의 가공 및 저장을 제공하기 위해서는 입력/출력(I/O)의 동작의 성능을 강화하는 것이 중요하다. 데이터 저장 시스템은 개선된 I/O성능을 달성하기 위해서 캐시메모리(cache)를 이용한다. SCSI 장치는 많은 데이터 저장 시스템 사이에서 점점 더 널리 그리고 흔히 사용되고 있다. SCSI는 디스크 드라이버, 시디롬 드라이버 같은 주변 저장 기기를 핸드폰, 서버, 컴퓨터 등과 같은 호스트 장치로 연결시키는 표준 설비이다. SCSI 장치는 호스트 어댑터이거나, SCSI버스에 연결될 수 있는 인공지능 주변 저장 기기이다. 상기 SCSI 장치는 일반적으로 더욱 빠르고, 웹 서버와 같은 고성능의 데이터 저장 시스템에 사용될 수 있다. SCSI 데이터 저장 시스템은 논리 유닛 번호(Logical Unit Number, LUN)에 의해 식별되는 저장 드라이버를 제공하는 SCSI 장치를 포함한다. 각각의 논리 유닛 번호(LUN)가 식별하는 특정의 논리 유닛(LU)은 하드 디스크 드라이브의 일부, 하나의 하드 디스크 전체 또는 저장 시스템의 몇몇의 하드 디스크들이다. 논리 유닛 번호(LUN)는 전체 레이드(Redundant Array of Independent Disks, RAID) 세트, 단독의 디스크 또는 파티션, 복수의 하드 디스크 또는 하드 디스트 내의 복수의 파티션들을 참조할 수 있다. SCSI 장치는 I/O 동작의 성능을 향상시키기 위해 캐시를 사용한다.
논리 유닛(LU)에 대한 캐싱 라이트(caching WRITE)와 캐싱 리드(caching READ)를 위해, SCSI 장치에 의해 실행되는 캐시 할당 정책은 캐시와 강화된 SCSI 장치의 I/O 성능의 최적화된 사용을 제공할 수 있다. 그러나, 데이터 저장 시스템에서 가장 흔히 존재하는 캐시 할당 정책은 각각의 논리 유닛(LU)에 고정되게 캐시를 할당하는 정책에 기초한다. 각각의 논리 유닛(LU)에 할당된 캐시의 부분들은 리드(read) 캐시 부분과 라이트(write) 캐시 부분으로 더 고정적으로 나뉘어진다. 따라서, 일단 캐시의 부분들이 고정적으로 할당되면, 상기 할당된 부분이 논리 유닛(LU)에 의해 전혀 사용되지 않는다고 하더라도, 다시 할당될 수 없어 캐시 사용의 효율을 감소시킨다.
기존의 몇몇의 캐시 할당 정책은 데이터 저장 시스템의 I/O제한 조건에 맞추어 고정형 캐시(fixed cache)와 확장성 있는 캐시(scalable cache) 사이의 스위칭을 제공한다. 확장성 있는 캐시의 추가는 하드웨어 복잡성을 증대시킨다. 기존의 몇몇 방법은 QoS(Quality of Service) 트래픽 클래스(traffic class)에 기초하여 캐시의 동적 할당을 제공하지만, 각각의 논리 유닛(LU)의 제한 조건에 의한 주소의 동적 할당에 실패한다.
데이터는 상기 논리 유닛(LU)과 논리 블록들(logical blocks)이라 불리는 고정된 크기의 데이터 블록 내의 캐시 사이에서 전송된다. 그리고 각각의 논리 블록은 고유한 논리 블록 주소(Logical Block addresses, LBA)에 의해 주소가 지정된다. 데이터 블록이 논리 유닛(LU)으로부터 캐시로 복사될 때마다, 캐시 엔트리(cache entry)가 생성된다. 모든 캐시 엔트리는 상기 카피된 데이터와 이에 대응하는 메타데이터(Metadata)를 포함한다. SCSI 장치 내의 많은 수의 캐시 엔트리의 메타데이터를 검색하는 것은 지루하고 많은 시간을 들이는 작업이다. 따라서, SCSI 장치를 위한 기존의 방법은 미리 정의된 기준을 만족하면, SCSI 장치 캐시 내의 캐시 플러싱(flushing)(예를 들어, 동기화된 캐시 커맨드를 이용하여)을 이용하여 모든 캐시 엔트리를 무효화하는 것이다. 그러나, 캐시 플러싱은 고비용의 방법이고, 빈번한 플러싱은 시스템의 성능을 저하시킨다.
본 발명이 해결하려는 과제는, 통합 캐시를 SCSI 장치의 하나 또는 복수의 논리 유닛(LU)들에게 동적으로 할당하는 시스템 및 방법을 제공하는 것이다.
본 발명이 해결하려는 다른 과제는, 통합 캐시 할당 상태를 유지하기 위해 모든 논리 유닛(LU)에 대한 캐시 할당 테이블을 포함하는 시스템을 제공하는 것이다.
본 발명이 해결하려는 다른 과제는, SCSI 장치가 선택적으로 통합 캐시 내의 캐시 엔트리를 플러시하기 위해 캐시 할당 테이블(cache allocation table)을 검색하는 것을 가능하게 하는 시스템을 제공하는 것이다.
본 발명이 해결하려는 다른 과제는, 하나 또는 복수의 논리 유닛(LU)의 QoS 트래픽 클래스(traffic class)에 기초하여 캐시 엔트리를 분류하여 상기 통합 캐시를 동적으로 할당하기 위한 시스템을 제공하는 것이다.
상기 과제를 해결하기 위한 본 발명의 일 실시예에 따른 통합 캐시를 SCSI 장치의 적어도 하나의 논리 유닛(LU)에 동적으로 할당하는 시스템은, 호스트 장치 및 상기 SCSI 장치를 포함하고, 상기 SCSI 장치는, 통합 캐시 모듈과, 캐시 밸런서 모듈을 포함하되, 상기 캐시 밸런서 모듈은, 상기 호스트 장치로부터 입력/출력(I/O) 요청을 수신한 후에, 상기 통합 캐시 모듈 내의 적어도 하나의 캐시 슬롯을 상기 적어도 하나의 논리 유닛(LU)에 할당하고, 상기 수신한 I/O요청에 대한 데이터를 상기 통합 캐시의 상기 적어도 하나의 캐시 슬롯에 캐싱(chaching)하여 적어도 하나의 캐시 엔트리를 기록(log)하고, 상기 할당된 적어도 하나의 캐시 슬롯에 대응하는 테이블 엔트리를 상기 적어도 하나의 논리 유닛(LU)의 캐시 할당 테이블에 등록(register)한다.
상기 과제를 해결하기 위한 본 발명의 일 실시예에 따른 통합 캐시를 SCSI 장치의 적어도 하나의 논리 유닛(LU)에 동적으로 할당하는 방법은, 통합 캐시를 SCSI 장치의 적어도 하나의 논리 유닛(LU)으로 동적으로 할당하는 방법에 있어서, 호스트 장치로부터 입력/출력(I/O) 요청을 수신한 후에, 통합 캐시 모듈 내의 적어도 하나의 캐시 슬롯을 상기 적어도 하나의 논리 유닛(LU)에 할당하고, 상기 수신한 I/O요청에 대한 데이터를 상기 통합 캐시의 상기 적어도 하나의 캐시 슬롯에 캐싱(chaching)하여 적어도 하나의 캐시 엔트리를 기록하고, 상기 할당된 적어도 하나의 캐시 슬롯에 대응하는 테이블 엔트리를 상기 적어도 하나의 논리 유닛(LU)의 캐시 할당 테이블에 등록한다.
상기 기재된 그리고 기재되지 않은 본 발명의 실시예의 태양은 상세한 설명 및 첨부되는 도면을 같이 참조하면 더욱 잘 이해되고 설명될 수 있다. 선택된 실시예와 복수의 특정한 세부사항이 기재된 후술되는 상세한 설명은 예시적인 것이고, 제한적이지 않은 것으로 이해될 것이다. 많은 변화와 변경은 제시된 실시예의 범위 안에서 발명의 핵심을 떠나지 않고 만들어 질 수 있고, 상기 제시된 실시예는 모든 변경을 다 포함한다.
본 발명은 첨부된 도면의 여러 도면에 공통적으로 대응되는 부분에 대한 도면 부호를 참조함으로써 설명된다. 본 발명의 실시예는 다음의 참조되는 도면과 함께 후술되는 상세한 설명에 의해 명확히 이해될 것이다.
도 1은 본 발명의 실시예에 따른 통합 캐시를 하나 또는 복수의 논리 유닛(LU)들로 동적 할당이 가능한SCSI 데이터 저장 시스템의 개요도이다.
도 2는 본 발명의 실시예에 따른 통합 캐시를 이용한 리드(read) 과정을 설명하기 위한 순서도이다.
도 3은 본 발명의 실시예에 따른 통합 캐시의 라이트(write)과정을 설명하기 위한 순서도이다.
도 4는 본 발명의 실시예에 따른 하나의 논리 유닛(LU)에 대한 통합 캐시 할당의 예시도이다.
도 5는 본 발명의 실시예에 따른 복수의 논리 유닛들(LUs)에 대한 통합 캐시 할당의 예시도이다.
도 6은 본 발명의 실시예에 따른 하나 또는 복수의 논리 유닛들(LUs)에 대해 하나 또는 복수의 캐시 엔트리가 타이머와 함께 배정되는 통합 캐시 할당의 예시도이다.
도 7은 본 발명의 실시예에 따른 논리 유닛(LU)의 하나 또는 복수의 QoS트래픽 클래스(traffic class)에 대한 통합 캐시 할당의 예시도이다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다.
본 발명의 실시예가 달성하려는 시스템 및 방법은 입력/출력(I/O) 동작의 요청에 기초하여 SCSI장치 내의 하나 또는 복수의 논리 유닛들(LUs)에 동적으로 할당될 수 있는 통합 캐시를 제공한다. 각각의 논리 유닛(LU)의 캐시 엔트리의 개수는 상기 캐시 밸런서 모듈에 의해 채택된 캐시 할당 정책, 상기 논리 유닛(LU)의 제한조건 등과 같은 요소에 기초하여 캐시 밸런서 모듈에 의해 동적으로 할당된다. 따라서, 상기 캐시 밸런서 모듈은 전체 통합 캐시를 하나의 논리 유닛(LU) 또는 나누어진 복수의 논리 유닛들(LUs)들 사이에 할당할 수 있다.
실시예에 따르면, 각각의 논리 유닛(LU)의 상기 캐시 엔트리는 각각의 논리 유닛(LU) 내의 QoS 성능을 향상시키는 QoS 트래픽 클래스(traffic class)에 기초하여 분류될 수 있다.
상기 시스템은 각각의 논리 유닛(LU)의 캐시 엔트리에 대한 통합 캐시 할당 상태를 유지하는 각각의 논리 유닛(LU)의 통합 캐시 할당 테이블을 포함한다. 상기 캐시 할당 테이블은 상기 캐시 엔트리의 메타데이터를 제공하는 테이블 엔트리를 포함한다. 상기 캐시 밸런서 모듈은 각각의 논리 유닛(LU)의 모든 캐시 엔트리 또는 상기 통합 캐시로부터 캐시 엔트리의 방출(evict)(선택적 플러시)에 대한 테이블 엔트리를 상기 캐시 할당 테이블에 업데이트한다.
상기 시스템은 상기 통합 캐시 내의 상기 캐시 엔트리를 방출하기 위해 상기 캐시 밸런서 모듈이 효과적으로 상기 캐시 할당 테이블을 검색하는 것을 가능하게 한다. 상기 캐시 할당 테이블의 테이블 엔트리는 상기 캐시 엔트리의 방출을 위한 효율적인 검색 동작이 가능하도록 고유한 방식으로 상기 캐시 엔트리의 상기 메타데이터를 저장한다.
본 발명의 실시예에 따르면, 상기 시스템은 스테일 캐시 엔트리를 추적하기 위해 상기 캐시 밸런서 모듈이 하나 또는 복수의 캐시 엔트리에 타이머를 배정하게 하는 것을 가능하게 한다. 상기 시스템은 만일 상기 캐시 엔트리가 미리 설정된 시간 내에 아직 액세스되지 않았거나 변경되지 않았다면, 상기 캐시 엔트리가 스테일하다고 결정하는 것이 가능하다. 만일 상기 캐시 엔트리가 스테일 하다면, 상기 엔트리는 우선적으로 방출될 수 있다. 상기 캐시에 대해 상기 배정된 타이머가 만료될 때마다 상기 캐시 밸런서 모듈이 상기 캐시 엔트리에 대응하는 통합 캐시의 상기 부분을 할당 해제한다. 상기 시스템은 더욱 높은 캐시 적중률(cache hits)과 매우 낮은 캐시 미스(cache miss)에 따른 캐시 성능의 향상 및 효과적으로 향상된 SCSI 데이터 저장 시스템의 성능을 제공한다.
본 발명의 실시예에 따르면, 호스트 장치는 상기 통합 캐시의 선택적 플러싱을 시작할 수 있다.
명세서 전체에서 "통합 캐시"와 "캐시"는 상호 변경이 가능하게 사용된다.
명세서 전체에서 "QoS 트래픽 클래스(traffic class) "와 "QoS 클래스"는 상호 변경이 가능하게 사용된다.
명세서 전체에서 "데이터"와 "데이터 블록"은 상호 변경이 가능하게 사용된다.
명세서 전체에서 "데이터"와 "데이터 블록"은 상호 변경이 가능하게 사용된다.
이하, 도면들을 참조하여, 상세하게는 유사한 참조 부호가 여러 도면에 걸쳐 대응하는 특징을 연속적으로 나타낸 도1 내지 도 7을 참조하여, 본 발명의 실시예를 설명한다.
도 1은 본 발명의 실시예에 따른 통합 캐시를 하나 또는 복수의 논리 유닛들(LUs)로 동적 할당이 가능한SCSI 데이터 저장 시스템의 개념도이다. 도면은 호스트 장치(100) 및 SCSI 장치(101)를 도시한다. SCSI 장치(101)는 통합 캐시 모듈(102), 캐시 밸런서 모듈(103) 및 캐시 할당 테이블(104)를 포함한다. 호스트 장치(101)는 통합 캐시 모듈(102)을 이용하여 SCSI 장치(101)의 LU0, LU1 내지 LUn 중 어느 논리 유닛들(LUs)에 대한 리드(READ) 또는 라이트(WRITE) 입력/출력(I/O) 동작을 요청한다.
본 발명의 실시예에 따르면, 호스트 장치(100)는 스마톤 폰, PDA(personal Digital Assistant), PC(Personal Computer), 서버, 또 다른 SCSI 장치 등과 같이 SCSI 장치(101)와 연결하기 위해 SCSI를 제공할 수 있다. SCSI 장치(101)는 SCSI 버스를 장착할 수 있는 호스트 어댑터 또는 인텔리전트 주변 저장 장치가 될 수 있다.
본 발명의 실시예에 따르면, 만일 SCSI 장치(101)가 호스트 어댑터이면, 상기 논리 유닛(LUs)은 SCSI 장치(101)의 외부에 존재한다.
각각의 논리 유닛(LU)은 고유한 논리 유닛 번호(Logical Unit Number, LUN)에 의해 식별되고, 논리 유닛(LU)은 하드 디스크 드라이브의 파티션, 전체 하드 디스크 또는 저장 장치의 복수의 하드 디스크들이 될 수 있다. 상기 논리 유닛 번호는 전체 레이드(Redundant Array of Independent Disks, RAID) 세트, 하나의 디스크 또는 파티션, 복수의 하드 디스크들 또는 파티션들에서 참조할 수 있다.
캐시 밸런서 모듈(103)은 호스트 장치(100)의 I/O동작 요청에 대한 캐시 엔트리를 기록하기 위해 통합 캐시 모듈(102)의 부분을 할당한다. 통합 캐시 모듈(102)은 데이터의 크기(캐시되는 논리 블록의 개수), 데이터 트래픽 로드, QoS 트래픽 클래스(traffic class) 등과 같은 파라미터들을 포함하는 캐시 정책에 기초하여 분할 부분을 할당한다. 상기 시스템은 각각의 논리 유닛(LU)의 캐시 할당 상태를 유지하는 각각의 논리 유닛(LU0 내지 LUn)의 캐시 할당 테이블(104)을 제공한다. 캐시 엔트리(리드(read) 또는 라이트(write) 동작을 위해 요청된 데이터의 캐싱)가 통합 캐시 모듈(102) 내에 기록될 때마다, 캐시 밸런서 모듈(103)은 각각의 논리 유닛(LU)의 대응하는 테이블 엔트리로 캐시 할당 테이블(104)을 업데이트한다. 상기 테이블 엔트리는 대응하는 캐시 엔트리의 메타데이터를 제공한다.
본 발명의 실시예에 따르면, 상기 테이블 엔트리는 두개의 구성요소를 포함한다. 첫 번째 구성요소는 할당된 캐시 슬롯의 주소를 말하고, 두 번째 구성요소는 캐시 슬롯의 인접한 캐시 엔트리의 개수를 말한다. 하나 또는 복수의 캐시 슬롯은 하나 또는 각각의 캐시 슬롯이 하나의 논리 유닛(LU)의 하나 또는 복수의 인접한 캐시 엔트리를 포함하는 복수의 논리 유닛들(LUs)에 할당될 수 있다.
도 2는 본 발명의 실시예에 따른 통합 캐시를 이용한 리드(read) 과정을 설명하기 위한 순서도이다. 순서도(200)에 도시되었듯이, SCSI 장치(101)는 호스트 장치(100)로부터 리드(read) 데이터 커맨드를 받는다(201). 리드 커맨드는 SCSI 장치(101)에게 읽히는 데이터 블록(논리 블록)이 존재하는 특정 논리 유닛(LU)의 특정 논리 블록 주소를 제공하여 논리 블록을 읽을 것을 알려준다. 이어서, 캐시 밸런서 모듈(103)은 상기 캐시 할당 테이블(104)의 상기 존재하는 테이블 엔트리 중 어느 것이 수신된 리드(read) 커맨드(command)와 매치되는지를 확인한다(202). 상기 테이블 엔트리 포맷은 SCSI 장치(101)가 검색을 단순하고 효율적으로 함에 따라 제공된다. 만일 캐시 밸런서 모듈(103)이 매치(match)를 검출하면, 캐시가 적중(cache hits)되고, 호스트 장치는 상기 검출된 테이블 엔트리와 대응하는 지정된 캐시 슬롯으로부터 하나 또는 복수의 캐시 엔트리를 읽는다(203).
만일 202 단계에서, 캐시 밸런서 모듈(103)이 수신된 리드 커맨드와 매치되는 상기 테이블 엔트리를 검출하는 것을 실패하면, 캐시 밸런서 유닛(103)은 호스트 장치(100)에게 캐시 미스(cache miss)가 발생함을 알려준다. 캐시 미스의 발생을 수신하면, 호스트 장치(100)는 특정 논리 유닛(LU)으로부터의 데이터 리드 동작을 시작한다(204).
본 발명의 실시예에 따르면, 캐시 미스가 발생할 때마다, 캐시 밸런서 모듈(103)은 특정 논리 유닛(LU)으로부터의 상기 데이터 리드(read) 동작을 시작한다.
이어서, 호스트 장치(100)에 의해 발행된 리드(read) 커맨드를 수신할 때에, 캐시 밸런서 모듈(103)은 특정 논리 유닛(LU) 내의 특정 LBA들로부터 데이터를 캐싱하여 새로운 캐시 엔트리를 기록한다(205). 나아가, 캐시 밸런서 모듈(103)은 대응하는 테이블 엔트리를 특정 논리 유닛(LU)의 캐시 할당 테이블(104)에 등록하여(할당된 캐시 슬롯 주소와 캐시 슬롯 내의 인접한 캐시 엔트리의 숫자를 지정하여) 캐시 할당 테이블(104)을 업데이트한다(206). 이어서, 호스트 장치(100)는 업데이트된 테이블 엔트리에 대응하는 캐시 슬롯으로부터 상기 데이터를 읽는다(203). 상기 방법(200) 내의 다양한 단계는 제시된 순서대로 수행되거나, 다른 순서대로 또는 동시에 수행될 수 있다. 나아가, 몇몇 실시예에서는 도 2에 제시된 몇몇 단계는 생략될 수 있다.
도 3은 본 발명의 실시예에 따른 통합 캐시의 라이트(write)과정을 설명하기 위한 순서도이다. 순서도(300)에 도시되었듯이, 캐시 밸런서 모듈(103)은 쓰여지는 데이터가 있는 특정 논리 유닛(LU) 내의 LBA들을 특정하는 호스트 장치(100)로부터 라이트(write) 커맨드를 수신한다(301). 캐시 밸런서 모듈(103)은 통합 캐시 모듈(102)이 라이트 커맨드 내의 특정한 데이터를 캐시하기에 충분히 빈 공간을 가지는지를 결정한다(302). 이 단계(302)는 캐시 밸런스 모듈(103)이 통합 캐시 모듈(102)의 빈 부분과 차 있는 부분을 확인하는 것을 가능하게 하는 캐시 할당 테이블(104) 내의 테이블 엔트리를 통한 검색 동작에 의해 수행된다.
만일 302단계에서, 캐시 밸런서 모듈(103)이 통합 캐시 모듈(102)이 특정 논리 유닛(LU)에 쓰여지는 데이터를 캐싱하기 위한 빈 공간을 가지지 못한다고 판단하면, 캐시 밸런서 모듈(103)은 방출 또는 무효화될 수 있는 캐시 슬롯을 식별하여 선택적 플러시 동작을 시작한다. 나아가, 캐시 밸런서 모듈(103)은 쓰여지는 데이터를 위한 빈 공간을 제공하기 위하여 상기 대응하는 캐시 슬롯을 할당 해제한다(303). 캐시 밸런서 모듈(103)은 시스템에 의해 특정된 캐시 할당 및 할당 해제 정책에 기초한 선택적 플러싱을 수행한다. 이어서, 캐시 밸런서 모듈(103)은 상기 할당 해제된 캐시 슬롯에 대응하는 상기 테이블 엔트리를 삭제하고(304), 캐시 할당 테이블(104)을 업데이트 한다.
만일 통합 캐시 모듈(102)이 충분한 빈 공간을 가진다면, 캐시 밸런서 모듈(103)은 쓰여지는 데이터를 위한 캐시 슬롯을 할당한다. 캐시 밸런서는 호스트 장치(100)로부터 데이터를 캐싱하여 하나 또는 복수의 새로운 캐시 엔트리를 할당된 캐시에 기록한다(305).
나아가, 캐시 밸런서 모듈(103)은 대응하는 논리 유닛(LU)의 캐시 할당 테이블(104)에 테이블 엔트리를 등록하여 캐시 할당 테이블(104)을 업데이트한다(306). 이어서, 캐시 밸런서 모듈(103)은 캐시 엔트리로부터 특정 LBA들로 캐시된 상기 데이터를 쓴다(307). 방법(300) 내의 다양한 단계는 제시된 순서대로, 다른 순서대로 또는 동시에 수행될 수 있다. 나아가, 몇몇 실시예에서는 도 3에 제시된 몇몇 단계는 생략될 수 있다.
도 4는 본 발명의 실시예에 따른 하나의 논리 유닛(LU)에 대한 통합 캐시 할당의 예시도이다. 도면은 캐시 밸런서 모듈(103)에 의해 하나의 논리 유닛(LU)에 할당되어 하나의 캐시 슬롯1 내에 하나의 논리 유닛(LU)의 5개의 캐시 엔트리(캐시 엔트리1 내지 캐시 엔트리5)가 기록된 통합 캐시 모듈(102)을 도시한다.
예를 들어, 호스트 장치(100)에 의해 시작된 라이트(write) 동작에서, 호스트 장치(100)가 데이터를 LU0의 LBA들의 범위에 쓰기 원할 때마다, 캐시 밸런서 모듈(103)은 통합 캐시 모듈(102)을 전체적으로 LU0에 할당할 수 있고, 하나의 캐시 슬롯에 인접한 캐시 엔트리를 기록할 수 있다. 나아가, 캐시 밸런서 모듈(103)은 대응하는 할당된 캐시 슬롯의 테이블 엔트리를 LU0의 캐시 할당 테이블(104)에 (1, 5)로 등록한다. 여기서 ‘1’은 통합 캐시 모듈(102)의 할당된 캐시 슬롯의 고유한 주소를 가리키고, ‘5’는 통합 캐시 모듈(102)에 쓰여지는 인접한 캐시 엔트리의 개수를 가리킨다. 캐시된 데이터는 나중에 저장 수단(특정 논리 유닛(LU))에 쓰여진다. 통합 캐시 모듈(102)의 빈 공간은 사용되지 않은 캐시이고, 데이터를 캐싱하기 위한 요청이 수신될 때마다 할당될 수 있다.
도 5는 본 발명의 실시예에 따른 복수의 논리 유닛들(LUs)에 대한 통합 캐시 할당의 예시도이다. 도면은 캐시 밸런서 모듈(103)에 의해 LU0 및 LU1의 2개의 논리 유닛들(LUs)에 할당된 통합 캐시 모듈(102)을 도시한다.
본 발명에 따른 실시예에 따른면, 통합 캐시 모듈(102)은 복수의 논리 유닛들(LUs)에 배정될 수 있다.
호스트 장치(100)는 LU0의 LBA1 및 LBA2에 의해 특정된 2개의 논리 블록들에 쓰여지는 데이터를 요청한다. 캐시 밸런서 모듈(103)은 2개의 논리 블록이 통합 캐시 모듈(102) 상에 캐시되도록 동일한 크기의 2개의 캐시 엔트리의 캐시 슬롯을 할당한다. 캐시 밸런서 모듈(103)은 캐시 슬롯 1에 캐시 엔트리1 및 캐시 엔트리 2를 기록한다. 일단 데이터가 통합 캐시 모듈(102)에 캐시되면, 캐시 밸런스 모듈(103)은 캐시 할당 테이블(104)에 대응하는 테이블 엔트리를 (1, 2)로 등록한다. 여기서, ‘1’은 캐시 슬롯 1의 주소를 가리키고, ‘2’는 캐시 슬롯 1 내의 인접하는 캐시 엔트리의 개수를 가리킨다.
예를 들어, 만일 호스트 장치(100)가 LU1에 쓰여지는 데이터를 위한 하나의 블록의 다른 라이트 요청을 시작한다면, 캐시 밸런서 모듈(103)은 LU1의 캐시 엔트리 1을 기록하고, 캐시 할당 테이블(104)에 대응하는 테이블 엔트리를 (2,0)으로 등록한다. 여기서 ‘2’는 캐시 슬롯2의 주소를 가리키고, ‘0’은 캐시 슬롯 2 내에 인접하는 캐시 엔트리가 없다는 것을 가리킨다. 캐시 할당 테이블(104)는 하나 또는 복수의 캐시 엔트리를 포함하는 캐시 슬롯의 모든 할당 또는 할당 해제에 대하여 테이블 엔트리를 등록하여 계속적으로 업데이트된다. LU0의 캐시 할당 테이블(104) 내의 두 번째 테이블 엔트리 (3,0)은 오직 하나의 캐시 엔트리(0개의 인접한 캐시 엔트리)를 포함하는 LU0에 할당된 캐시 슬롯 3(캐시 슬롯 주소 3에 의해 식별된)을 특정한다. 유사하게, LU1의 두 번째 캐시 할당 테이블(104) 내의 테이블 엔트리 (4,0) LU1에 할당된 하나의 캐시 엔트리(0개의 인접한 캐시 엔트리)를 가진 캐시 슬롯 4를 가리킨다. 통합 캐시 모듈(102)의 빈 공간은 사용되지 않는 캐시이고, 데이터를 캐싱하기 위해 요청이 수신될 때마다 할당될 수 있다.
도 6은 본 발명의 실시예에 따른 하나 또는 복수의 논리 유닛(LU)에 대해 하나 또는 복수의 캐시 엔트리가 타이머와 함께 배정되는 통합 캐시 할당의 예시도이다. 호스트 장치(100)가 통합 캐시 모듈(102)을 사용하는 LU0, LU1 내지 LUn로부터 논리 유닛들(LUs) 중 어느 것에 대해 읽고 쓰는 입력/출력(I/O) 동작을 시작한다. 도면은 캐시 밸런서 모듈(103)에 의해 LU0 및 LU1의 2개의 논리 유닛들(LUs)에 할당된 통합 캐시 모듈(102)을 도시한다. 하나 또는 복수의 캐시 엔트리는 타이머 값와 같이 배정된다. 도면은 타이머 값과 같이 배정된 LU0의 캐시 엔트리1 및 캐시 엔트리 2 그리고, LU1의 캐시 엔트리 1을 도시한다. 대응하는 타이머 값의 만료는 상기 대응하는 캐시 엔트리를 무효화시킨다. 이는 상기 시스템이 스테일 캐시 엔트리를 방출하는 것을 가능하게 한다. 스테일 캐시 엔트리가 방출될 때마다, 캐시 할당 테이블(104) 내의 대응하는 테이블 엔트리는 캐시 밸런스 모듈(103)에 의해 방출되고, 따라서, 통합 캐시 모듈(102)의 대응하는 캐시 슬롯들을 할당 해제한다. 이러한 동작은 통합 캐시 모듈(102)의 증대된 빈 공간(사용하지 않은 공간)을 제공한다.
타이머 값과 같이 배정되지 않는 캐시 엔트리는 호스트 장치(100)가 논리 유닛에 대한 캐시 슬롯의 할당 테이블의 매핑을 유지하라고 요구할 때마다 호스트 장치(100)에 의해 무효화된다.
도 7은 본 발명의 실시예에 따른 논리 유닛(LU)의 하나 또는 복수의 QoS트래픽 클래스(traffic class)에 대한 통합 캐시 할당의 예시도이다. 호스트 장치(100)는 통합 캐시 모듈(102)을 사용하는 LU0, LU1 내지 LUn로부터 논리 유닛들(LUs) 중 어느 것에 대해 읽고 쓰는 입력/출력(I/O) 동작을 요청한다. 도면은 캐시 밸런스 모듈(103)에 의해 QoS 클래스 1, QoS 클래스2의 LU0의 다양한 QoS 트래픽 클래스(traffic class)에 할당된 통합 캐시(102)를 도시한다. 예를 들어, 3개의 인접한 캐시 엔트리를 가진 캐시 슬롯 1은 LU0의 대응하는 첫 번째 테이블 엔트리와 같이QoS클래스 1에 (1,3)으로 할당된다. 인접하는 2개의 캐시 엔트리를 가진 캐시 슬롯 2는 대응하는 테이블 엔트리와 같이 QoS 클래스 2에 (2,2)로 할당된다.
본 발명의 실시예에 따르면, 통합 캐시 모듈(102)은 SCSI 장치(101) 내의 하나 또는 복수의 논리 유닛들(LUs)의 하나 또는 복수의 QoS 클래스에 배정될 수 있다.
QoS 트래픽 클래스(traffic class)에 따른 LU0 내의 데이터의 분류는 캐시 밸런서 모듈(103)이 논리 유닛(LU) 내의 데이터의 다양한 QoS 클래스 사이를 구별하는 것, QoS 클래스의 순위를 매기는 것 및 다양한 QoS 특성에 기초하여 적용되는 캐싱 정책을 정의하는 것을 가능하게 한다. 따라서, 다양한 QoS 클래스의 데이터는 서로 독립적으로 취급될 수 있다. 예를 들어, QoS 클래스 1은 오디오 데이터가 될 수 있는 반면에, QoS 클래스 2는 비디오 데이터가 될 수 있다. QoS 클래스에 따라 데이터를 캐싱하는 것은 따라서, 캐시 밸런서 모듈(103)이 QoS 클래스1을 식별하는 것을 가능하게 한다. 이에 따라, 캐시 밸런서 모듈(103)은 더 높은 주파수에서 오디오 데이터가 바뀌었을 때, QoS 클래스 1 데이터(오디오 데이터)를 가지고 있는 캐시 슬롯 1을 방출하는 주파수를 더 높게 유지하는 것이 가능하다.
캐시 할당 테이블(104) 내의 테이블 엔트리는 캐시 밸런서 모듈(103)이 유사한 클래스 데이터에 속해있는 모든 캐시 슬롯을 식별하는 것과 동일한 타입의 처리를 제공하는 것을 가능하게 한다.
본 발명의 실시예는 적어도 하나의 하드웨어 장치에서 실행되고, 상기 구성요소들을 제어하기 위해 네트워크 운영기능을 수행하는 적어도 하나의 소프트웨어 프로그램을 통해 실행될 수 있다. 도 1, 도 4 내지 7에 도시된 구성요소들은 적어도 하나의 하드웨어 장치 또는 하드웨어 장치 및 소프트웨어 모듈의 조합이 될 수 있는 블록을 포함한다.
이상 첨부된 도면을 참조하여 본 발명의 실시예를 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
100: 호스트 장치 101: SCSI 장치
102: 통합 캐시 모듈 103: 캐시 밸런서 모듈
104: 캐시 할당 테이블

Claims (12)

  1. 통합 캐시를 SCSI(Small Computer System Interface) 장치의 적어도 하나의 논리 유닛(LU)에 동적으로 할당하는 시스템에 있어서,
    호스트 장치; 및
    상기 SCSI 장치를 포함하고,
    상기 SCSI 장치는,
    통합 캐시 모듈과,
    캐시 밸런서 모듈을 포함하되,
    상기 캐시 밸런서 모듈은, 상기 호스트 장치로부터 입력/출력(I/O) 요청을 수신한 후에, 상기 통합 캐시 모듈 내의 적어도 하나의 캐시 슬롯을 상기 적어도 하나의 논리 유닛(LU)에 할당하고,
    상기 수신한 I/O요청에 대한 데이터를 상기 통합 캐시의 상기 적어도 하나의 캐시 슬롯에 캐싱(chaching)하여 적어도 하나의 캐시 엔트리를 기록(log)하고,
    상기 할당된 적어도 하나의 캐시 슬롯에 대응하는 테이블 엔트리를 상기 적어도 하나의 논리 유닛(LU)의 캐시 할당 테이블에 등록(register)하는 캐시 동적 할당 시스템.
  2. 제1 항에 있어서,
    상기 캐시 밸런서 모듈은 상기 할당된 적어도 하나의 캐시 슬롯에 대응하는 상기 테이블 엔트리를 등록하되,
    상기 통합 캐시 모듈 내의 상기 적어도 하나의 캐시 슬롯은 하나 또는 복수의 인접한 캐시 엔트리를 포함하는 캐시 동적 할당 시스템.
  3. 제1 항에 있어서,
    상기 캐시 밸런서 모듈은, 상기 통합 캐시 모듈의 대응하는 부분을 할당 해제(de-allocate)하기 위해 상기 적어도 하나의 캐시 슬롯을 선택적으로 플러시하는 캐시 동적 할당 시스템.
  4. 제3 항에 있어서,
    상기 캐시 밸런서 모듈은, 상기 캐시 할당 테이블 내의 하나 또는 복수의 테이블 엔트리를 검색하여 상기 대응하는 부분을 할당 해제(de-allocate)하기 위해 상기 적어도 하나의 캐시 슬롯을 선택적으로 플러시하는 캐시 동적 할당 시스템.
  5. 제1 항에 있어서,
    상기 캐시 밸런서 모듈은 스테일(stale) 캐시 엔트리를 확인하여 선택적으로 플러시하기 위해 타이머를 상기 적어도 하나의 캐시 엔트리에 배정하고,
    상기 선택적으로 플러시된 스테일 캐시 엔트리에 대응하는 상기 하나 또는 복수의 테이블 엔트리를 플러시하여 상기 캐시 할당 테이블을 업데이트 하는 캐시 동적 할당 시스템.
  6. 제1 항에 있어서,
    상기 캐시 밸런서 모듈은, 상기 적어도 하나의 논리 유닛(LU)의 상기 데이터의 QoS(Quality of Service) 트래픽 클래스(traffic class)에 기초하여 상기 데이터를 캐싱하기 위해, 상기 통합 캐시의 상기 적어도 하나의 캐시 슬롯을 동적으로 할당하는 캐시 동적 할당 시스템.
  7. 통합 캐시를 SCSI 장치의 적어도 하나의 논리 유닛(LU)에 동적으로 할당하는 방법에 있어서,
    호스트 장치로부터 입력/출력(I/O) 요청을 수신한 후에, 통합 캐시 모듈 내의 적어도 하나의 캐시 슬롯을 상기 적어도 하나의 논리 유닛(LU)에 할당하고,
    상기 수신한 I/O요청에 대한 데이터를 상기 통합 캐시의 상기 적어도 하나의 캐시 슬롯에 캐싱(chaching)하여 적어도 하나의 캐시 엔트리를 기록하고,
    상기 할당된 적어도 하나의 캐시 슬롯에 대응하는 테이블 엔트리를 상기 적어도 하나의 논리 유닛(LU)의 캐시 할당 테이블에 등록하는 것을 포함하는 캐시 동적 할당 방법.
  8. 제7 항에 있어서,
    상기 할당된 적어도 하나의 캐시 슬롯에 대응하는 상기 테이블 엔트리를 등록하는 것을 더 포함하되,
    상기 통합 캐시 모듈 내의 상기 적어도 하나의 캐시 슬롯은 하나 또는 복수의 인접한 캐시 엔트리를 포함하는 캐시 동적 할당 방법.
  9. 제7 항에 있어서,
    상기 통합 캐시 모듈의 대응하는 부분(segments)을 할당 해제(de-allocate)하기 위해 상기 적어도 하나의 캐시 슬롯을 선택적으로 플러시하는(flushing) 것을 더 포함하는 캐시 동적 할당 방법.
  10. 제9 항에 있어서,
    상기 캐시 할당 테이블 내의 하나 또는 복수의 테이블 엔트리를 검색하여 상기 대응하는 분할 부분을 할당 해제(de-allocate)하기 위해 적어도 하나의 캐시 슬롯을 선택적으로 플러시하는 것을 더 포함하는 캐시 동적 할당 방법.
  11. 제7 항에 있어서,
    스테일(stale) 캐시 엔트리를 확인하여 선택적으로 플러시하기 위해 타이머를 상기 적어도 하나의 엔트리에 배정하고,
    상기 선택적으로 플러시된 스테일 캐시 엔트리에 대응하는 상기 하나 또는 복수의 테이블 엔트리를 삭제함에 의해 상기 캐시 할당 테이블을 업데이트하는 것을 더 포함하는 캐시 동적 할당 방법.
  12. 제7 항에 있어서,
    상기 적어도 하나의 논리 유닛(LU)의 상기 데이터의 QoS(Quality of Service) 트래픽 클래스(traffic class)에 기초하여 상기 데이터를 캐싱하기 위해, 상기 통합 캐시의 상기 적어도 하나의 캐시 슬롯을 동적으로 할당하는 것을 더 포함하는 캐시 동적 할당 방법.
KR1020130138458A 2013-06-13 2013-11-14 통합 캐시를 하나 또는 복수의 논리 유닛에 동적 할당하는 시스템 및 방법 KR102149468B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US14/274,815 US9396128B2 (en) 2013-06-13 2014-05-12 System and method for dynamic allocation of unified cache to one or more logical units

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
IN2572CH2013 2013-06-13
IN2572/CHE/2013 2013-06-13

Publications (2)

Publication Number Publication Date
KR20140145525A true KR20140145525A (ko) 2014-12-23
KR102149468B1 KR102149468B1 (ko) 2020-08-28

Family

ID=52675288

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130138458A KR102149468B1 (ko) 2013-06-13 2013-11-14 통합 캐시를 하나 또는 복수의 논리 유닛에 동적 할당하는 시스템 및 방법

Country Status (1)

Country Link
KR (1) KR102149468B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180021327A (ko) * 2016-08-19 2018-03-02 에스케이하이닉스 주식회사 데이터 처리 시스템 및 그의 동작 방법

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040193803A1 (en) * 2003-03-28 2004-09-30 Kazuhiko Mogi Cache management method for storage device
US20050071599A1 (en) * 2003-09-30 2005-03-31 Modha Dharmendra Shantilal Storage system and method for dynamically allocating cache space among different workload classes
US20130238845A1 (en) * 2008-05-14 2013-09-12 Hitachi, Ltd. System and method for allocating capacity

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040193803A1 (en) * 2003-03-28 2004-09-30 Kazuhiko Mogi Cache management method for storage device
US20050071599A1 (en) * 2003-09-30 2005-03-31 Modha Dharmendra Shantilal Storage system and method for dynamically allocating cache space among different workload classes
US20130238845A1 (en) * 2008-05-14 2013-09-12 Hitachi, Ltd. System and method for allocating capacity

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180021327A (ko) * 2016-08-19 2018-03-02 에스케이하이닉스 주식회사 데이터 처리 시스템 및 그의 동작 방법

Also Published As

Publication number Publication date
KR102149468B1 (ko) 2020-08-28

Similar Documents

Publication Publication Date Title
KR102055164B1 (ko) 스토리지 시스템, 스토리지 관리 디바이스, 스토리지 디바이스, 하이브리드 스토리지 디바이스, 및 스토리지 관리 방법
KR101726824B1 (ko) 캐시 아키텍처에서 하이브리드 미디어의 효율적인 사용
US11347428B2 (en) Solid state tier optimization using a content addressable caching layer
US9141529B2 (en) Methods and apparatus for providing acceleration of virtual machines in virtual environments
US9135181B2 (en) Management of cache memory in a flash cache architecture
US8214606B2 (en) Storage system and control method thereof
US20130145089A1 (en) Cache memory management in a flash cache architecture
JP2018163659A (ja) 逆キャッシュテーブルを用いるハードウェアベースのマップアクセラレーション
US9971527B2 (en) Apparatus and method for managing storage for placing backup data into data blocks based on frequency information
US20100174864A1 (en) Performance in a data storage system
WO2021218038A1 (zh) 一种存储系统、内存管理方法和管理节点
KR20120050891A (ko) 스토리지 시스템에서 요청에 대한 응답과 연관된 지연의 감소
KR101297442B1 (ko) 공간 지역성을 고려한 요구 기반 플래시 메모리 변환 계층을 포함하는 낸드 플래시 메모리 시스템
WO2016056104A1 (ja) ストレージ装置、及び、記憶制御方法
US10176098B2 (en) Method and apparatus for data cache in converged system
JP6323445B2 (ja) ストレージ装置と方法及びプログラム
US10853252B2 (en) Performance of read operations by coordinating read cache management and auto-tiering
US11144224B2 (en) Locality-aware, memory-efficient, time-efficient hot data identification using count-min-sketch for flash or streaming applications
JP6402557B2 (ja) ストレージ装置、ストレージ制御方法およびストレージ制御プログラム
US9396128B2 (en) System and method for dynamic allocation of unified cache to one or more logical units
US8769196B1 (en) Configuring I/O cache
KR102149468B1 (ko) 통합 캐시를 하나 또는 복수의 논리 유닛에 동적 할당하는 시스템 및 방법
US10853257B1 (en) Zero detection within sub-track compression domains
US11144445B1 (en) Use of compression domains that are more granular than storage allocation units
US11288211B2 (en) Methods and systems for optimizing storage resources

Legal Events

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