KR20200109131A - 객체의 메타데이터 처리 장치 및 방법 - Google Patents

객체의 메타데이터 처리 장치 및 방법 Download PDF

Info

Publication number
KR20200109131A
KR20200109131A KR1020190028256A KR20190028256A KR20200109131A KR 20200109131 A KR20200109131 A KR 20200109131A KR 1020190028256 A KR1020190028256 A KR 1020190028256A KR 20190028256 A KR20190028256 A KR 20190028256A KR 20200109131 A KR20200109131 A KR 20200109131A
Authority
KR
South Korea
Prior art keywords
frame
metadata
pointer
wrapper
mapping
Prior art date
Application number
KR1020190028256A
Other languages
English (en)
Other versions
KR102172219B1 (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 KR1020190028256A priority Critical patent/KR102172219B1/ko
Publication of KR20200109131A publication Critical patent/KR20200109131A/ko
Application granted granted Critical
Publication of KR102172219B1 publication Critical patent/KR102172219B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks

Abstract

객체의 메타데이터 처리 장치 및 방법에 관한 것으로, 메타데이터 처리 장치는 객체를 객체 저장 공간에 저장하고, 상기 객체의 메타데이터를 상기 객체 저장 공간에 대응하는 메타데이터 저장 공간에 저장하는 저장부 및 포인터에 상대적 위치 정보를 부가하거나 또는 상기 포인터를 기반으로 상기 메타데이터 저장 공간의 위치를 결정하되, 상기 상대적 위치 정보는 상기 메타데이터 저장 공간까지의 거리를 포함하는 프로세서를 포함할 수 있다.

Description

객체의 메타데이터 처리 장치 및 방법{APPARATUS AND METHOD FOR PROCESSING METADATA OF OBJECT}
본 발명은 객체에 대한 메타데이터(metadata)를 처리하기 위한 장치 및 방법에 관한 것이다.
통상 프로그램 실행 단계에서 시스템의 무결성 및 안전성 검사에 소요되는 시공간적 비용은 정보(메타데이터)의 갱신, 조회 또는 저장 방식 등에 많은 영향을 받는다. 이와 관련하여 결정적(deterministic) 방법론은 메모리 상의 객체(또는 포인터)를 기본적으로 전부 추적하고, 객체(또는 포인터)의 위치와 크기 등에 대한 다양한 정보를 데이터 구조에 저장하게 된다. 이와 같은 이유로, 런타임(run-time) 단계에서 무결성, 안전성 및 보안성 검사로 인해 필연적으로 발생하는 시스템의 성능 저하를 감소시키기 위해서는 효율적인 메타데이터의 운영이 필요하다.
이와 같은 효율적인 메타데이터의 운영을 위해, 다양한 방법들이 제시되고 있었다. 그러나, 이와 같은 방법들은 여러 문제점을 안고 있었다. 예를 들어, 이와 같은 방법들은 검사의 정확성을 희생시키거나, 메모리의 레이아웃(layout)을 변경하여 다른 외부 장치들과의 호환성을 저하시키거나, 그림자 메모리 공간(shadow space)을 추가적으로 생성하거나, 또는 메모리 객체 위치를 과도하게 재배치하여 메모리 공간을 낭비하는 등과 같은 여러 문제점이 있었다. 하드웨어 기반의 역량 모델은 이론적으로는 다른 방법론들보다 더 높은 단계의 무결성, 안전성 및 보안성을 보장할 수 있다. 그러나, 하드웨어 기반의 역량 모델은 현재 통상 이용되는 각종 컴퓨팅 장치들과는 호환되지 않는 문제점이 있어, 현재 시스템 환경에 바로 적용하기에는 어렵다.
대한민국 공개특허 제2009-0066071호 (2009.06.23. 공개) 대한민국 공개특허 제2018-0123265호 (2018.11.16. 공개)
본 발명이 이루고자 하는 기술적인 과제는 시스템 메모리 내의 다양한 종류의 객체들에 대한 부가 정보, 즉 메타데이터를 효율적으로 관리 및 운영할 수 있는 객체의 메타데이터 처리 장치 및 방법을 제공하는 것이다.
상술한 과제를 해결하기 위하여 객체의 메타데이터 처리 장치 및 방법이 제공된다.
메타데이터 처리 장치는, 객체를 객체 저장 공간에 저장하고 상기 객체의 메타데이터를 상기 객체 저장 공간에 대응하는 메타데이터 저장 공간에 저장하는 저장부 및 포인터에 상대적 위치 정보를 부가하거나 또는 상기 포인터를 기반으로 상기 메타데이터 저장 공간의 위치를 결정하되, 상기 상대적 위치 정보는 상기 메타데이터 저장 공간까지의 거리를 포함하는 프로세서를 포함할 수 있다.
상기 프로세서는 2의 i 제곱 크기이며 그 크기로 정렬된 메모리 블록을 갖는 i-프레임을 기반으로 상기 포인터에 상대적 위치 정보를 부가하거나 또는 상기 메타데이터 저장 공간의 위치를 결정하되, 여기서 i는 프레임 값이고 자연수일 수 있다.
상기 i-프레임은 상기 객체를 포함하는 가장 작은 크기의 프레임인 래퍼 프레임을 포함할 수 있다.
상기 프로세서는 상기 래퍼 프레임의 프레임 값이 미리 정의된 기준 프레임의 프레임 값보다 작거나 또는 미리 정의된 기준 프레임의 프레임 값과 동일한 경우, 상기 기준 프레임의 시작 주소와 상기 메타데이터 저장 공간 사이의 오프셋을 상기 포인터에 상기 상대적 위치 정보로 부가할 수 있다.
상기 프로세서는 상기 래퍼 프레임의 프레임 값이 상기 기준 프레임의 프레임 값보다 작거나 또는 같은지 여부에 대한 정보를 상기 포인터에 더 부가할 수 있다.
상기 프로세서는 상기 객체에 대응하는 기준 프레임의 시작 주소를 결정하고 상기 기준 프레임의 시작 주소 및 상기 오프셋을 기반으로 상기 메타데이터 저장 공간의 위치를 결정할 수 있다.
상기 프로세서는, 상기 래퍼 프레임의 프레임 값이 기준 프레임의 프레임 값보다 큰 경우, 상기 래퍼 프레임의 프레임 값을 상기 포인터에 상기 상대적 위치 정보로 부가할 수 있다.
상기 저장부는 각각 적어도 하나의 매핑 엔트리를 포함하는 적어도 하나의 매핑 어레이를 포함하고, 상기 프로세서는 상기 래퍼 프레임의 프레임 값을 이용하여, 상기 적어도 하나의 매핑 어레이 중 대응하는 매핑 어레이를 결정하고, 결정된 매핑 어레이에 상기 래퍼 프레임에 대응하는 객체를 매핑할 수 있다.
상기 프로세서는 상기 매핑 프레임의 시작 주소를 획득하고, 상기 시작 주소로부터의 거리 및 상기 매핑 어레이의 크기로부터 상기 매핑 어레이에 대응하는 주소를 결정하고, 상기 래퍼 프레임의 프레임 값을 기반으로 상기 매핑 어레이 내의 상기 매핑 엔트리의 위치를 결정하고, 상기 매핑 엔트리를 이용하여 상기 메타데이터 저장 공간의 위치를 결정할 수 있다.
상기 객체 저장 공간에 대응하는 메타데이터 저장 공간은 상기 객체 저장 공간에 부가된 헤더를 포함할 수 있다.
메타데이터 처리 방법은, 객체의 메타데이터가 저장된 메타데이터 저장 공간까지의 거리를 포함하는 상대적 위치 정보를 포인터에 부가하되, 상기 메타데이터 저장 공간은 상기 객체가 저장되는 객체 저장 공간에 대응하는 단계 및 상기 포인터를 기반으로 상기 메타데이터 저장 공간의 위치를 결정하는 단계를 포함할 수 있다.
상기 객체의 메타데이터가 저장된 메타데이터 저장 공간까지의 거리를 포함하는 상대적 위치 정보를 포인터에 부가하는 단계는 2의 i 제곱 크기이며 그 크기로 정렬된 메모리 블록을 갖는 i-프레임을 기반으로 상기 포인터에 상대적 위치 정보를 부가하는 단계를 포함하되, 여기서 i는 프레임 값이고 자연수일 수 있다.
상기 i-프레임은 상기 객체를 포함하는 가장 작은 크기의 프레임인 래퍼 프레임을 포함하되, 상기 객체의 시작 주소 및 마지막 주소는 상기 래퍼 프레임의 선행 서브 프레임 및 후행 서브 프레임 각각에 대응할 수 있다.
상기 2의 i 제곱 크기이며 그 크기로 정렬된 메모리 블록을 갖는 i-프레임을 기반으로 상기 포인터에 상대적 위치 정보를 부가하는 단계는, 상기 래퍼 프레임의 프레임 값이 미리 정의된 기준 프레임의 프레임 값보다 작거나 또는 미리 정의된 기준 프레임의 프레임 값과 동일한 경우, 상기 기준 프레임의 시작 주소와 상기 메타데이터 저장 공간 사이의 오프셋을 상기 포인터에 상기 상대적 위치 정보로 부가하는 단계를 포함할 수 있다.
상기 2의 i 제곱 크기의 메모리 블록을 갖는 i-프레임을 기반으로 상기 포인터에 상대적 위치 정보를 부가하는 단계는, 상기 래퍼 프레임의 프레임 값이 상기 기준 프레임의 프레임 값보다 작거나 또는 같은지 여부에 대한 정보를 상기 포인터에 더 부가하는 단계를 더 포함할 수 있다.
상기 포인터를 기반으로 상기 메타데이터 저장 공간의 위치를 결정하는 단계는, 상기 객체에 대응하는 기준 프레임의 시작 주소를 결정하는 단계 및 상기 기준 프레임의 시작 주소 및 상기 오프셋을 기반으로 상기 메타데이터 저장 공간의 위치를 결정하는 단계를 포함할 수 있다.
상기 2의 i 제곱 크기의 메모리 블록을 갖는 i-프레임을 기반으로 상기 포인터에 상대적 위치 정보를 부가하는 단계는, 상기 래퍼 프레임의 프레임 값이 기준 프레임의 프레임 값보다 큰 경우, 상기 래퍼 프레임의 프레임 값을 상기 포인터에 상기 상대적 위치 정보로 부가하는 단계를 포함할 수 있다.
상기 저장부는, 각각 적어도 하나의 매핑 엔트리를 포함하는 적어도 하나의 매핑 어레이를 포함하고, 상기 래퍼 프레임의 프레임 값을 상기 포인터에 상기 상대적 위치 정보로 부가하는 단계는, 상기 래퍼 프레임의 프레임 값을 이용하여, 상기 적어도 하나의 매핑 어레이 중 대응하는 매핑 어레이를 결정하는 단계 및 결정된 상기 매핑 어레이에 상기 래퍼 프레임에 대응하는 객체를 매핑하는 단계를 포함할 수 있다.
상기 포인터를 기반으로 상기 메타데이터 저장 공간의 위치를 결정하는 단계는, 상기 매핑 프레임의 시작 주소를 획득하는 단계, 상기 시작 주소로부터의 거리 및 상기 매핑 어레이의 크기로부터 상기 매핑 어레이에 대응하는 주소를 결정하는 단계, 상기 래퍼 프레임의 프레임 값을 기반으로 상기 매핑 어레이 내의 상기 매핑 엔트리의 위치를 결정하는 단계 및 상기 매핑 엔트리를 이용하여 상기 메타데이터 저장 공간의 위치를 결정하는 단계를 포함할 수 있다.
상기 객체 저장 공간에 대응하는 메타데이터 저장 공간은, 상기 객체 저장 공간에 부가된 헤더를 포함할 수 있다.
메타데이터 처리 방법은, 객체에 대응하는 래퍼 프레임이 기준 프레임의 서브 프레임인지 여부가 결정되되, 상기 객체를 포함하는 가장 작은 크기의 메모리 블록을 갖는 프레임인 단계 및 상기 래퍼 프레임이 기준 프레임의 서브 프레임인 경우, 상기 기준 프레임의 시작 주소 및 상기 메타데이터 저장 공간 사이의 오프셋을 상기 포인터에 상기 상대적 위치 정보로 부가하는 단계를 포함할 수 있다.
메타데이터 처리 방법은, 상기 래퍼 프레임이 상기 기준 프레임보다 클 경우, 상기 래퍼 프레임의 프레임 값을 상기 포인터에 상기 상대적 위치 정보로 부가하는 단계를 더 포함할 수 있다.
상기 래퍼 프레임의 프레임 값을 상기 포인터에 상기 상대적 위치 정보로 부가하는 단계는, 상기 매핑 구역에 상기 i-프레임에 대응하는 객체를 매핑하는 단계를 포함할 수 있다.
상술한 객체의 메타데이터 처리 장치 및 방법에 의하면, 시스템 메모리 내의 다양한 종류의 객체들의 정보(즉, 메타데이터)를 효율적으로 관리 및 운영할 수 있게 되는 효과를 얻을 수 있다.
또한, 포인터의 이용되지 않는 비트(bit) 및 부가 테이블을 기반으로 메타데이터의 위치를 연산하여 메타 데이터에 직접적으로 접근할 수 있는 효율적인 객체 별 메타데이터 관리를 수행할 수 있게 되는 장점도 얻을 수 있다.
또한, 객체(또는 포인터)의 내부 메모리 레이아웃을 변화시키지 않으므로 호환성 저하를 차단하고, 또한 그림자 메모리 공간의 생성이나 과도한 메모리 객체 위치 재배치 등에 기인한 메모리 공간의 낭비를 방지할 수 있게 되어, 호환성 저하 및 메모리 공간 낭비 없이 시스템 무결성/안정성 검사를 수행할 수 있게 되는 장점도 얻을 수 있다.
또한, 각각의 객체의 메타데이터가 각각의 객체에 직접 부가되므로, 참조의 지역성(locality of references)를 최대화할 수 있으며, 또한 과도한 객체의 정렬 조정과 공간 패딩을 억제하여 메모리 공간의 효율성을 높일 수 있게 된다.
또한, 디버깅 과정 또는 테스트 과정에서 발생하는 프로그램의 시간적/공간적인 낭비를 최소화하여 소프트웨어 개발 비용을 절감하면서 시스템의 에러와 취약점을 용이하게 검출하게 되는 효과도 얻을 수 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 상세한 설명이 제공된다.
도 1은 메타데이터 처리 장치의 일 실시예에 대한 블록도이다.
도 2는 객체 저장 공간 및 메타데이터 저장 공간의 일 실시예를 도시한 도면이다.
도 3은 포인터의 일 실시예를 도시한 도면이다.
도 4는 i-프레임의 일 실시예를 설명하기 위한 도면이다.
도 5는 래퍼 프레임의 일 실시예를 설명하기 위한 제1 도이다.
도 6은 래퍼 프레임의 일 실시예를 설명하기 위한 제2 도이다.
도 7은 프레임의 프레임 값을 계산하는 과정을 설명하기 위한 도면이다.
도 8은 기준 프레임 값보다 작은 프레임 값을 갖는 래퍼 프레임의 경우에서 포인터의 생성 및 사용의 일례를 설명하기 위한 도면이다.
도 9는 기준 프레임 값보다 작은 프레임 값을 갖는 래퍼 프레임의 경우에서 포인터의 생성 및 사용의 일례를 설명하기 위한 도면이다.
도 10은 매핑 어레이의 일 실시예를 설명하기 위한 도면이다.
도 11a와 도 11b는 메타데이터 처리 장치에 대한 정규화된 런타임 오버헤드에 대한 실험 결과와 정규화된 메모리 오버헤드의 결과 그래프이다.
도 12는 명령어 1000 개 당 L1 D-캐시(d-cache) 메모리의 로드 미스(load miss)의 정규화된 오버헤드의 실험 결과를 도시한 그래프 도면이다.
도 13은 객체의 메타 정보 처리 방법에 있어서 포인터를 생성하는 과정의 일 실시예에 대한 흐름도이다.
도 14는 객체의 메타 정보 처리 방법에 있어서 포인터로부터 객체 및 메타데이터의 위치를 결정하는 과정의 일 실시예에 대한 흐름도이다.
이하 명세서 전체에서 동일 참조 부호는 특별한 사정이 없는 한 동일 구성요소를 지칭한다. 이하에서 사용되는 '부'가 부가된 용어는, 소프트웨어 또는 하드웨어로 구현될 수 있으며, 실시예에 따라 '부'가 하나의 부품으로 구현되거나, 하나의 '부'가 복수의 부품들로 구현되는 것도 가능하다.
명세서 전체에서 어떤 부분이 다른 부분과 연결되어 있다고 할 때, 이는 어떤 부분과 다른 부분에 따라서 물리적 연결을 의미할 수도 있고, 또는 전기적으로 연결된 것을 의미할 수도 있다. 또한, 어떤 부분이 다른 부분을 포함한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 부분 이외의 또 다른 부분을 제외하는 것이 아니며, 설계자의 선택에 따라서 또 다른 부분을 더 포함할 수 있음을 의미한다.
'제1' 이나 '제2' 등의 용어는 하나의 부분을 다른 부분으로부터 구별하기 위해 사용되는 것으로, 특별한 기재가 없는 이상 이들이 순차적인 표현을 의미하는 것은 아니다. 또한, 단수의 표현은 문맥상 명백하게 예외가 있지 않는 한, 복수의 표현을 포함할 수 있다.
이하 도 1 내지 도 10을 참조하여 메타데이터 처리 장치의 일 실시예에 대해서 설명하도록 한다.
도 1은 메타데이터 처리 장치의 일 실시예에 대한 블록도이다.
도 1을 참조하면, 메타데이터 처리 장치(1)는 프로세서(100) 및 프로세서(100)와 통신 가능하게 연결되어 데이터를 송수신하거나 또는 제어 신호를 수신할 수 있는 저장부(200)를 포함할 수 있다. 이 경우, 프로세서(100) 및 저장부(200)는 케이블, 회로 도선 및/또는 무선 통신네트워크 등을 이용하여 상호 통신 가능하게 설정된 것일 수 있다.
메타데이터 처리 장치(1)는 컴퓨팅이 가능한 소정의 전자 장치를 이용하여 구현할 수 있다. 예를 들어, 메타데이터 처리 장치(1)는 데스크톱 컴퓨터, 랩톱 컴퓨터, 스마트폰, 태블릿 피씨, 두부 장착형 디스플레이(HMD, Head Mounted Display) 장치, 스마트 시계, 디지털 텔레비전, 셋톱 박스, 내비게이션 장치, 개인용 디지털 보조기(PDA, Personal Digital Assistant), 휴대용 게임기, 전자 칠판, 전자 광고판, 음향 재생 장치, 현금 자동 입출입기(ATM, Automated Teller Machine) 또는 전자적으로 연산 및/또는 제어가 가능한 다양한 전자 장치 중 적어도 하나로 구현될 수 있다.
프로세서(100)는 연산/제어 등을 수행할 수 있는 소정의 정보 처리 장치를 이용하여 구현할 수 있다. 예를 들어, 프로세서(100)는 중앙 처리 장치(CPU, Central Processing Unit), 마이크로 컨트롤러 유닛(MCU, Micro Controller Unit), 애플리케이션 프로세서(AP, Application Processor), 마이컴(Micom, Micro Processor), 전자 제어 유닛(ECU, Electronic Controlling Unit) 및/또는 각종 연산 처리 및 제어 신호의 생성이 가능한 다른 전자 장치 등을 포함할 수 있다. 이들 장치는, 예를 들어 하나 또는 둘 이상의 반도체 칩 및 관련 부품을 이용하여 구현 가능하다.
또한, 프로세서(100)는 애플리케이션(미도시)을 구동시켜, 미리 정의된 연산, 판단, 처리 및/또는 제어 동작 등을 수행할 수도 있다. 여기서, 애플리케이션은 후술하는 메타데이터 처리 방법을 수행하기 위해 특별히 마련된 것일 수 있다. 또한, 애플리케이션은 저장부(200)에 저장되어 메타데이터 처리 장치(1)에 내장된 것일 수도 있다. 이 경우, 애플리케이션은 설계자에 의해 사전에 저장부(200)에 저장되어 메타데이터 처리 장치(1)에 내장된 것일 수도 있고, 및/또는 유무선 통신 네트워크를 통해 접속 가능한 전자 소프트웨어 유통망을 통하여 메타데이터 처리 장치(1)에 의해 수신된 후 저장부(200)에 저장된 것일 수도 있다. 애플리케이션은 사용자의 선택이나 미리 정의된 설정에 따라 갱신될 수도 있다.
실시예에 따라, 프로세서(100)는 포인터 생성부(110) 및 위치 결정부(130)를 포함할 수 있다. 포인터 생성부(110) 및 위치 결정부(130) 각각은 논리적으로 구분되는 것일 수도 있고, 및/또는 물리적으로 구분되는 것일 수도 있다.
포인터 생성부(110)는, 적어도 하나의 객체(11)가 저장부(200)에 저장되는 경우, 적어도 하나의 객체(11) 및/또는 메타데이터(12)가 저장된 메모리 공간(210, 230) 상의 위치(즉, 주소)를 지시하는 포인터(30)를 생성/설정할 수 있다. 예를 들어, 포인터 생성부(110)는, 후술하는 바와 같이 상대적 위치 정보를 부가하여 포인터(30)를 생성할 수 있다. 실시예에 따라, 포인터 생성부(110)는 래퍼 프레임(wrapper frame)의 프레임 값과 기준 프레임의 프레임 값을 상호 비교하고, 비교 결과에 따라서 상이하게 상대적 위치 정보를 부가하여 포인터(30)를 생성한 후 생성된 포인터(30)를 저장부(200)에 저장할 수도 있다.
위치 결정부(130)는 포인터 생성부(110)에 의해 생성된 포인터(30)를 이용하여, 객체(11) 및/또는 메타데이터(12)가 저장된 메모리 공간 상의 위치(즉, 주소)를 결정할 수 있다.
포인터 생성부(110) 및 위치 결정부(130)의 자세한 동작은 후술하도록 한다.
저장부(200)는 데이터를 전자적 형태로 기록, 변경 및/또는 삭제할 수 있는 장치로, 메모리 장치를 이용하여 구현할 수 있다. 예를 들어, 저장부(200)는 주기억장치 및 보조기억장치 중 적어도 하나를 포함할 수 있으며, 주기억장치는 롬(ROM) 및/또는 램(RAM)과 같은 반도체 저장 매체를 이용하여 구현 가능하다. 롬은, 예를 들어 통상적인 롬, 이프롬(EPROM), 이이프롬(EEPROM) 및/또는 마스크롬(MASK-ROM) 등을 포함할 수 있고, 램은 예를 들어, 디램(DRAM) 및/또는 에스램(SRAM) 등을 포함할 수 있다. 보조기억장치는 플래시 메모리 장치, SD(Secure Digital) 카드, 솔리드 스테이트 드라이브(SSD, Solid State Drive), 하드 디스크 드라이브(HDD, Hard Disc Drive), 자기 드럼, 컴팩트 디스크(CD), 디브이디(DVD) 또는 레이저 디스크 등과 같은 광 기록 매체(optical media), 자기 테이프, 광자기 디스크 및/또는 플로피 디스크 등과 같이 데이터를 영구적 또는 반영구적으로 저장 가능한 적어도 하나의 저장 매체를 이용하여 구현될 수 있다.
저장부(200)는 데이터가 기록되는 메모리 공간(201)을 포함할 수 있다. 메모리 공간(201)은 객체(11)가 저장되는 객체 저장 공간(210) 및 메타데이터(12)가 저장되는 메타데이터 저장 공간(230)을 포함할 수 있으며, 또한 포인터(30) 및/또는 매핑 구역(40)이 저장되는 포인터 저장 공간(250)을 더 포함할 수도 있다. 이들 공간(210, 230, 250)의 구분은 설명의 편의를 위한 것으로, 실제 실시예에서는 세 저장 공간(210, 230, 250)들 모두가 분명하게 분리되어 구현될 필요는 없다.
일 실시예에 의하면, 객체 저장 공간(210) 및 메타데이터 저장 공간(230)은 서로 대응되어 메모리 공간(201) 내에 마련될 수 있다. 다시 말해서, 메타데이터 저장 공간(230)은 객체 저장 공간(210)에 상응하는 위치에 배치될 수 있다.
도 2는 객체 저장 공간 및 메타데이터 저장 공간의 일 실시예를 도시한 도면이다.
구체적으로, 도 2를 참조하면, 메모리 저장 공간(201)은 적어도 하나의 저장 블록(202)을 포함할 수 있으며, 저장 블록(202)은 적어도 하나의 데이터가 기록되는 데이터 블록(202a)과, 데이터 블록(202a)의 전단에 위치하고 데이터 블록(202a)에 대한 보충적인 데이터가 기록되는 헤더(202b)를 포함할 수 있다. 일 실시예에 의하면, 이와 같은 데이터 블록(202a)은 상술한 객체 저장 공간(210)으로 이용되고, 헤더(202b)는 상술한 메타데이터 저장 공간(230)으로 이용될 수 있다. 다시 말해서, 객체(11)는 데이터 블록(202a)에 저장되고, 객체(11)에 대응하는 메타데이터(12)는 헤더(202b)에 저장될 수 있다. 이와 같이 객체(11)에 대응하는 메타데이터(12)가 헤더(202b)에 기록되는 경우, 메타데이터(12)는 대응하는 객체(11)에 가깝게 배치되고 또한 객체(11)의 이동에 따라 더불어 이동하게 된다. 그러므로, 객체(11)의 저장 위치가 변경되더라도, 객체(11)가 직접 메타데이터(12)를 가지고 다닐 수 있게 되어, 참조의 지역성(locality of references)이 최대화되는 효과를 얻을 수 있다.
도 3은 포인터의 일 실시예를 도시한 도면이다.
포인터 저장공간(250)은 포인터(30)를 저장할 수 있도록 마련된다. 도 3을 참조하면, 포인터 저장공간(250)에 저장되는 포인터(30)는 제1 구역(31), 제2 구역(33) 및 제3 구역(35)을 포함할 수 있다.
제1 구역(31)은 객체(11)에 대한 주소를 기록하는 구역이다. 예를 들어, 포인터(30)가 64 비트(bit, binary digit) 포인터의 경우라면, 제1 구역(31)은 48 비트로 이루어진 것일 수 있다. 즉, 2의 48 제곱 개의 이진 데이터가 제1 구역(31)에 저장될 수 있다. 제1 구역(31)은 제2 구역(33)의 전단(또는 하단이라고 표현될 수도 있다)에 위치한다.
제2 구역(33)은 객체(11)의 메타데이터(12)에 대한 상대적인 위치 정보를 기록하는 구역이다. 상대적 위치 정보는 기준 위치로부터 객체(11)의 메타데이터를 저장한 특정한 위치(즉, 메타데이터 저장 공간(230))까지의 거리를 포함할 수 있다. 이와 같이 상대적 위치 정보를 제2 구역(33)에 기록해두면, 프로세서(100)는, 시작 주소(base address)를 인코딩 시, 기존 방식인 64비트 크기의 절대적인 위치 정보 대신에 상대적인 위치 정보를 이용하여 객체(11) 및/또는 메타데이터(12)의 위치를 추적할 수 있게 된다. 따라서, 이와 같이 상대적 위치를 기반으로 메타데이터(12)를 운영하는 것은 장치(1)의 성능 저하를 방지하는 효과를 얻을 수 있다. 상대적 위치 정보에 대한 구체적인 내용은 후술하도록 한다.
포인터(30)가 64 비트 포인터인 경우라면, 제2 구역(33)은 제1 구역(31)의 후단(또는 상단이라고 표현 가능하다)의 15 비트를 포함할 수도 있다. 다시 말해서, 2의 15 제곱 개의 이진 데이터가 제2 구역(33)에 저장될 수 있다. 이와 같은 제2 구역(33)은 기존의 64 비트 포인터에서는 사용되지 않던 구역으로, 이를 활용함으로써 불필요하게 비효율적으로 데이터 공간을 사용하는 것을 절감할 수 있게 된다.
제3 구역(35)은 포인터(30)의 처리와 관련된 부가적인 정보(예를 들어, 플래그(flag) 정보, 즉 플래그의 변수 값)를 기록할 수 있다. 예를 들어, 제3 구역(35)에는 래퍼 프레임(예를 들어, 도 5의 f2-1 또는 f5-1 등)의 프레임 값(예를 들어, 1 또는 4 등)이 기준 프레임(예를 들어, 도 8의 D1, D2)의 프레임 값(예를 들어, 16)보다 큰지 또는 작거나 같은지 여부에 대한 정보가 기록될 수 있다. 제3 구역(35)은 1 비트로 이루어질 수 있으며, 이 경우 래퍼 프레임(f2-1 또는 f5-1 등)의 프레임 값이 기준 프레임(D1, D2)의 프레임 값보다 큰 경우에는 제3 구역(35)에 1의 값(즉, flag==1)이, 래퍼 프레임(f2-1 또는 f5-1 등)의 프레임 값이 기준 프레임(D1, D2)의 프레임 값보다 작은 경우에는 제3 구역(35)에 0의 값(즉, flag==0)이 기록될 수도 있다. 또한, 제3 구역(35)은 제2 구역(33)의 후단(또는 상단)에 마련될 수도 있다.
포인터 생성부(110)는 객체(11)에 대한 포인터(30)를 이와 같이 제1 구역(31) 내지 제3 구역(35)을 포함하는 포인터(30)로 생성할 수 있다. 예를 들어, 64 비트 포인터(30)의 경우, 전단의 제1 내지 48 비트에는 주소를 기록하고, 제49 내지 63 비트에는 상대적 위치를 기록하며, 제64 비트에는 플래그 정보를 기록하여 64 비트 포인터(30)를 생성할 수도 있다. 또한, 위치 결정부(130)는 이와 같이 생성된 포인터(30)의 제1 구역(31), 제2 구역(33) 및/또는 제3 구역(35)에 저장된 데이터를 기반으로 저장 공간, 일례로 메타데이터가 저장된 메타데이터 저장 공간(230, 예를 들어, 헤더(202b))의 위치(즉, 주소)를 결정할 수 있으며, 또한 객체(11)가 저장된 저장 공간(202a, 210)의 위치(즉, 주소)도 결정할 수 있다.
이하 상대적 위치 정보 및 이를 기반으로 포인터의 생성 및 이용을 설명하도록 한다.
도 4는 i-프레임의 일 실시예를 설명하기 위한 도면이다.
도 4를 참조하면, 프레임(f0 내지 f4)은 일정한 크기를 갖는 각각의 메모리 구역을 의미한다. i-프레임은 어떤 자연수 i에 대하여 2의 i제곱 크기를 갖고 그 크기로 정렬되어 있으며 객체의 크기를 갖는 프레임을 의미한다.
구체적으로는, 0-프레임(f0)은 그 크기가 기준 크기의 1(=2^0) 배인 프레임을 의미하고, 1-프레임(f1)은 크기가 기준 크기의 2(=2^1) 배인 프레임을 의미한다. 기준 크기(예를 들어, 0-프레임의 크기)가 1 바이트라면, 0-프레임(f0)의 크기는 1 바이트이고, 1-프레임(f1)의 크기는 2 바이트로 주어질 수 있다. 또한, 동일하게 2-프레임(f2)는 크기가 기준 크기의 4(=2^2) 배인 프레임을 의미한다. 또한, 3-프레임(f3)은 크기가 기준 크기의 8(=2^3) 배인 프레임을 의미하고, 4-프레임(f4)은 크기가 기준 크기의 16(=2^4) 배인 프레임을 의미한다. 5-프레임(f5)은 크기가 기준 크기의 32(=2^5) 배인 프레임을 의미한다. 따라서, k와 j의 차가 1이면, k-프레임은 j-프레임에 비해 2배 크다. 예를 들어, 3-프레임(f3)의 크기는 2-프레임(f2)의 2배이다.
여기서 i는 대응하는 프레임의 프레임 값으로, 음이 아닌 정수(즉, 0 및 자연수)로 주어질 수 있다. 예를 들어, 4-프레임(f4)의 프레임 값은 4로 주어진다.
동일한 프레임 값(일례로, i)의 프레임(일례로, i-프레임)은 각각 순차적으로 정렬되어 어레이를 이룰 수 있다. 예를 들어, 프레임 값이 2인 복수의 2-프레임(f2)은 도 4에 도시된 바와 같이 배열될 수 있다(A1).
도 4에 도시된 바와 같이, 0-프레임(f0) 각각은 메모리 공간(M1)의 소정의 저장 공간 각각에 대응될 수 있다. 이 경우, 소정의 저장 공간은, 예를 들어 가장 작은 크기의 저장 공간(예를 들어, 바이트)을 포함할 수 있다. 다시 말해서, 1 바이트가 하나의 0-프레임(f0)에 대응할 수 있다.
한편, m이 0과 n 사이의 임의의 정수(즉, 0≤m<n)인 경우, 특정한 n-프레임에는 n-프레임보다 작은 적어도 하나의 m-프레임이 대응될 수 있다. 예를 들어, 4-프레임에는 두 개의 3-프레임이 대응될 수 있고, 4-프레임에는 네 개의 2-프레임이 대응될 수 있다. 이하 이와 같이 n-프레임에 대응되는 m-프레임을 서브 프레임이라고 지칭한다. 예를 들어, 상술한 경우에 있어서, 두 개의 3-프레임 및 네 개의 2-프레임은 각각 4-프레임의 서브 프레임이 된다.
도 5는 래퍼 프레임의 일 실시예를 설명하기 위한 제1 도이고, 도 6은 래퍼 프레임의 일 실시예를 설명하기 위한 제2 도이다.
이와 같이 프레임(f0 내지 f4)이 정의된 경우, 도 5에 도시된 바와 같이 특정한 객체(11-1 내지 11-4)에 대한 래퍼 프레임(f1-1, f0-5, f4-1, f3-2)이 정의될 수 있다. 래퍼 프레임은 특정한 객체(11-1 내지 11-4)를 포함하는 가장 작은 크기의 프레임(f1-1, f0-5, f4-1, f3-2)을 의미한다. 예를 들어, 제1 객체(11-1)의 경우, 제1 객체(11-1)에 포함되는 모든 저장 공간(x1, x2)은, 제1 1-프레임(f1-1), 제1 2-프레임(f2-1), 제1 3-프레임(f3-1) 및 제1 4-프레임(f4-1) 모두에 포함될 수 있다. 이 중에서 가장 작은 크기의 프레임, 즉 2의 크기를 갖는 프레임인 제1 1-프레임(f1-1)이 제1 객체(11-1)에 대한 래퍼 프레임으로 결정된다.
래퍼 프레임(예를 들어, i-프레임)의 결정은 래퍼 프레임(예를 들어, i-프레임)의 직계 서브 프레임(예를 들어, (i-1)-프레임)을 이용하여 수행될 수도 있다. 구체적으로, 래퍼 프레임의 직계 서브 프레임은 복수의 서브 프레임을 포함할 수도 있다. 복수의 서브 프레임은 가장 앞에 위치하는 서브 프레임(f0-1, f3-1, f2-3 등, 이하 선행 서브 프레임) 및 가장 뒤에 위치하는 서브 프레임(f0-2, f3-2, f2-4 등, 이하 후행 서브 프레임)을 포함할 수 있다. 특정한 객체(11-1 내지 11-4)에 대해 하나의 래퍼 프레임이 존재하는데, 특정한 객체(11-1 내지 11-4)의 시작 저장 공간(x1, x4, x7 등)의 주소(시작 주소)는 선행 서브 프레임(f0-1, f3-1, f2-3)에 대응하게 되고, 마지막 저장 공간(x2, x6, xa 등)의 주소(마지막 주소)는 후행 서브 프레임(f0-2, f3-2, f2-4)에 각각 대응하게 된다. 예를 들어, 도 5에 도시된 바와 같이, 제1 객체(11-1)의 경우, 래퍼 프레임인 제1 1-프레임(f1-1)의 선행 서브 프레임(f0-1)이 시작 저장 공간(x1)에 대응하고, 후행 서브 프레임(f0-2)이 마지막 저장 공간(x2)에 대응된다. 이를 이용하여 특정한 객체(11-1 내지 11-4)에 대한 래퍼 프레임(f1-1, f0-5, f4-1, f3-2)이 결정될 수도 있다. 구체적으로, 제4 객체(11-4)의 경우, 제4 객체(11-4)의 저장 공간(x7 내지 xa)을 모두 포함하는 제2 3-프레임(f3-2) 및 제1 4-프레임(f4-1) 중에서, 시작 저장 공간(x7)에 대응되는 제3 2-프레임(f2-3) 및 마지막 저장 공간(xa)에 대응되는 제4 2-프레임(f2-4)을 직계 서브 프레임으로 갖는 제2 3-프레임(f3-2)이 제4 객체(11-4)에 대한 래퍼 프레임으로 결정된다.
이와 같이 래퍼 프레임을 정의하는 경우, 도 6에 도시된 바와 같이, 제1 객체(11-1)에 대한 래퍼 프레임은 제1 1-프레임(f1-1)으로 주어지고, 제2 객체(11-2)에 대한 래퍼 프레임은 제5 0-프레임(f0-5)으로 주어지며, 제3 객체(11-3)에 대한 래퍼 프레임은 제1 4-프레임(f4-1)으로 주어질 수 있다. 또한, 제4 객체(11-4)에 대한 래퍼 프레임은 제2 3-프레임(f3-2)으로 주어질 수 있다.
한편, 래퍼 프레임(f1-1, f0-5, f4-1, f3-2)의 크기는 객체(11-1 내지 11-4)의 크기와 비례하지 않는다. 즉, 도 5에 도시된 바와 같이, 제4 객체(11-4)는 제3 객체(11-3)보다 그 크기가 크나, 제3 객체(11-3)에 대응하는 래퍼 프레임(f4-1)의 크기(2의 4제곱)가 제4 객체(11-4)에 대응하는 래퍼 프레임(f3-2)의 크기(2의 3제곱)가 더 클 수 있다. 왜냐하면, 래퍼 프레임(f1-1, f0-5, f4-1, f3-2)의 크기는 객체(11-1 내지 11-4)의 크기 및 객체(11-1 내지 11-4)의 위치 양자 모두에 의해 결정되는 것이기 때문이다.
도 7은 프레임의 프레임 값을 계산하는 과정을 설명하기 위한 도면이다.
객체(11-1 내지 11-4)가 주어진 경우, 객체(11-1 내지 11-4)에 대응하는 래퍼 프레임(f1-1, f0-5, f4-1, f3-2)의 크기는 다음과 같이 획득 가능하다. 구체적으로 제k 객체가 존재하는 경우, 래퍼 프레임(즉, k-프레임)은 상술한 정의에 의해 2의 k제곱에 의해 정렬된다. 그러므로, 프레임의 모든 바이트의 주소는 최상위 (64-k) 비트(most significant 64-k bit)의 동일한 값을 갖는다. 이는 제k 객체의 바이트의 주소의 경우에도 동일하다. 또한, 시작 주소와 마지막 주소는 각각 선행 서브 프레임 및 후행 서브 프레임에 각각 위치한다. 이는 시작 주소와 마지막 주소의 (k-1)번째 최소 유효 비트는 서로 반대의 값을 가진다는 것을 의미한다.
이와 같은 내용을 기본으로 래퍼 프레임의 프레임 값(k, 즉 래퍼 프레임의 크기의 log2 값)이 연산이 가능하다. 도 7에 도시된 바와 같이, 만약 64 비트를 이용하는 경우, 제k 객체의 시작 주소의 비트 벡터로 (b63, …, b1, b0)가 주어지고, 제k 객체의 마지막 주소의 비트 벡터로 (e63, …, e1, e0)이 주어질 수 있다. 이 경우, 이들 비트 벡터에 대해 배타적 논리합(XOR)을 적용하여 (0, …, 0, 1, X, …, X)의 적용 결과를 얻는다. 여기서, X는 무의미한 값(don't care 값)이다. 이후, 적용 결과에 대해 0의 개수를 카운트한다. 예를 들어, clz 연산을 수행할 수 있다. 이 경우 연산 결과에 따라, 64-k가 출력된다. 카운트(연산) 결과에 따라 획득된 값을 64에서 빼면, 래퍼 프레임의 프레임 값(k)을 획득할 수 있게 된다.
상술한 바와 같이 객체(11-1 내지 11-4)에 대응하는 래퍼 프레임(f1-1, f0-5, f4-1, f3-2)이 결정되면, 이를 기반으로 상대적 거리를 결정할 수 있다.
상술한 래퍼 프레임의 결정 과정은, 상술한 프로세서(100)에 의해 수행 가능하며, 예를 들어, 포인터 생성부(110)에 의해 수행될 수 있다.
도 8은 기준 프레임 값보다 작은 프레임 값을 갖는 래퍼 프레임의 경우에서 포인터의 생성 및 사용의 일례를 설명하기 위한 도면이다.
포인터 생성부(110)는 특정한 객체(11, 11-1 내지 11-5)에 대응하는 래퍼 프레임(f1-1, f0-5, f4-1, f3-2 등)을 결정하고, 결정한 래퍼 프레임(f1-1, f0-5, f4-1, f3-2 등)을 기반으로 포인터(30)를 생성할 수 있다.
일 실시예에 의하면, 포인터 생성부(110)는, 도 8에 도시된 바와 같이, 미리 정의된 기준 프레임(RF1 내지 RF3)을 이용하여 포인터(30)의 생성 방법을 결정할 수 있다. 이 경우, 기준 프레임(RF1 내지 RF3)은 소정의 프레임 값을 가질 수 있다. 소정의 프레임 값은, 설계자에 의해 미리 정의된 것일 수도 있고, 및/또는 사용자 등에 의해 설정된 것일 수도 있다. 또한, 기준 프레임(RF1 내지 RF3)의 프레임 값은 포인터 생성부(110)가 미리 정의된 설정에 따라 또는 임의적으로 결정한 것일 수도 있다.
구체적으로, 포인터 생성부(110)는 소정의 객체(일례로, 도 8의 11-5)에 대응하는 래퍼 프레임(미도시)의 프레임 값과, 기준 프레임(RF1 내지 RF3)의 프레임 값을 상호 비교한다. 여기서 소정의 객체(11-5)는 헤더(h5) 및 데이터 블록(d5)을 포함하며, 각각 소정의 크기를 갖는다.
만약 비교 결과, 소정의 객체(11-5)에 대응하는 래퍼 프레임의 프레임 값이, 기준 프레임(RF1 내지 RF3)의 프레임 값보다 작거나 또는 기준 프레임(RF1 내지 RF3)의 프레임 값과 동일하면, 포인터 생성부(110)는 이를 기반으로 기준 프레임(RF1 내지 RF3)의 시작 주소와 메타데이터 저장 공간(230, 예를 들어, 헤더(h5)) 사이의 오프셋(l5, offset, 거리나 차이 등으로 표현 가능하다)을 상대적 위치 정보로 하여 포인터(30)에 부가할 수 있다.
실시예에 따라서, 포인터 생성부(110)는 소정의 객체(11-5)에 대응하는 래퍼 프레임의 프레임 값이 기준 프레임(RF1 내지 RF3)의 프레임 값보다 작다는 정보 또는 기준 프레임(RF1 내지 RF3)의 프레임 값과 동일하다는 정보를 플래그 정보로 제3 구역(35)에 더 부가할 수도 있다.
구체적으로, 도 8에 도시된 바와 같이, 사용자 공간(user space) 등과 같은 저장 공간(또는 주소 공간)을 분할하여 소정 크기의 기준 프레임(RF1 내지 RF3)이 설정될 수 있다. 기준 프레임(RF1 내지 RF3)은 후술하는 매핑 프레임(MF1, MF2)보다 프레임 값이 더 작은 프레임이다.
일 실시예에 의하면, 기준 프레임(RF1 내지 RF3)의 프레임 값은 포인터(30)의 제2 구역(33)의 크기에 대응하여 결정된 것일 수 있다. 즉, 포인터(30)의 제2 구역(33)의 크기가 15 비트라면, 기준 프레임의 프레임 값은 15로 결정될 수 있으며(즉, 15-프레임이 기준 프레임으로 결정될 수 있다), 이에 따라 프레임의 크기는 2의 15 제곱으로 주어질 수 있다. 물론 제2 구역(33)의 크기가 15 비트가 아니라면, 이에 따라서 기준 프레임의 프레임 값 역시 15가 아닌 다른 값으로 정의될 수도 있다. 이는 기준 프레임(RF1 내지 RF3)의 프레임 값보다 작은 프레임 값을 갖는 래퍼 프레임(f1-1, f0-5, f4-1, f3-2 등)에 대한 오프셋이 제2 구역(33)에 인코딩될 수 있도록 하기 위함이다.
만약 도 8에 도시된 바와 같이 제5 객체(11-5)가 주어진 경우, 제5 객체(11-5)에 대응하는 기준 프레임(RF1)의 시작 주소로부터 제5 객체(11-5)의 헤더(h5)까지의 오프셋(l5)이 상대적 거리로 포인터(30)의 제2 구역(33)에 기록될 수 있다.
이와 같이 포인터(30)가 생성되면, 프로세서(100, 예를 들어 위치 결정부(130))는 포인터(30)를 기반으로 객체(11, 예를 들어 제5 객체(11-5))의 메타 데이터 저장 공간(230)의 위치를 결정할 수 있다.
구체적으로, 먼저 위치 결정부(130)는 제3 구역(35)에 기록된 플래그 정보를 읽어, 제5 객체(11-5)에 대한 래퍼 프레임의 프레임 값이 기준 프레임(RF1)의 프레임 값보다 작은지 또는 또는 제5 객체(11-5)에 대한 래퍼 프레임의 프레임 값이 기준 프레임(RF1)의 프레임 값과 같은지 여부를 확인할 수 있다.
만약 제5 객체(11-5)에 대한 래퍼 프레임의 프레임 값이 기준 프레임(RF1)의 프레임 값보다 작다고 판단되거나 또는 제5 객체(11-5)에 대한 래퍼 프레임의 프레임 값이 기준 프레임(RF1)의 프레임 값과 동일하다고 판단되면, 위치 결정부(130)는 기준 프레임(RF1)의 시작 주소 및 제2 구역(33)에 기록된 오프셋을 기반으로 메타데이터 저장 공간(230)의 위치, 일례로 헤더(h5)의 위치를 결정할 수 있다. 구체적으로, 위치 결정부(130)는 먼저 기준 프레임(RF1)의 시작 주소를 결정한다. 기준 프레임(RF1)의 시작 주소는 포인터(30)의 제1 구역(31)에 저장된 주소를 이용하여 결정될 수 있다. 예를 들어, 위치 결정부(130)는 최소 유효 비트(예를 들어, 15 비트)의 값들을 0으로 처리하여 기준 프레임(RF1)의 시작 주소를 결정할 수 있다. 기준 프레임(RF1)의 시작 주소가 결정되면, 오프셋을 이용하여 결정된 기준 프레임(RF1)의 시작 주소로부터 메타데이터 저장 공간(230)의 주소(즉, 헤더(h5)의 주소)를 결정할 수 있게 된다. 오프셋은 상술한 바와 같이 제2 구역(33)을 열람하여 획득할 수 있다. 일 실시예에 의하면, 상술한 과정은 하기의 연산을 통해 수행될 수 있다.
FLAG_MASK = ~(1ULL << 63);
offset = (tagged_pointer & FLAG_MASK) >> 48;
untagged_pointer= tagged_pointer & 0xFFFFFFFFFFFF;
slotbase = untagged_pointer & ( ~0ULL << 15);
header_addr = slotbase + offset;
여기서, '~'는 보수(complement)를 의미하고, '&'는 and 연산을 의미하며, '<<'와 '>>'는 각각 좌측 천이(shift left), 우측 천이(right left) 연산을 의미한다.
한편, 헤더(h5)의 위치가 결정되면, 헤더(h5)의 크기는 이미 알려진 값이므로, 데이터 블록(d5)의 위치(즉, 주소) 역시 구해질 수 있다. 예를 들어, 헤더(h5)의 주소에 헤더(h5)의 크기를 부가함으로써 데이터 블록(d5)의 시작 주소를 결정할 수 있다. 이에 따라 객체(11) 및 메타데이터(12)의 주소를 알 수 있게 된다. 상술한 과정은 프로세서(100), 예를 들어 위치 결정부(130)에 의해 처리될 수 있다.
도 9는 기준 프레임 값보다 작은 프레임 값을 갖는 래퍼 프레임의 경우에서 포인터의 생성 및 사용의 일례를 설명하기 위한 도면이고, 도 10은 매핑 어레이의 일 실시예를 설명하기 위한 도면이다.
상술한 바와 같이 포인터 생성부(110)는 소정의 객체(예를 들어, 도 9의 11-6, 11-7)에 대응하는 래퍼 프레임(미도시)의 프레임 값과 기준 프레임(RF1 내지 RF3)의 프레임 값을 상호 비교할 수 있다. 비교 결과, 만약 래퍼 프레임(f1-1, f0-5, f4-1, f3-2 등)의 프레임 값이 기준 프레임(RF1 내지 RF3)의 프레임 값보다 크다면, 포인트 생성부(110)는 소정의 객체(11-6, 11-7)에 대응하는 래퍼 프레임의 프레임 값을 이용하여 포인터(30)를 생성할 수 있다.
예를 들어, 도 9에 도시된 바와 같이, 제6 객체(11-6)의 경우, 시작 주소는 제1 기준 프레임(RF1)에 대응되고, 마지막 주소는 제2 기준 프레임(RF2)에 대응된다. 다시 말해서, 제6 객체(11-6)는 어느 하나의 기준 프레임(RF1, RF2)에 온전히 내제되지 않는다. 그러나, 이들 기준 프레임(RF1, RF2)을 서브 프레임으로 갖는 제1 상위 프레임(MF1, 이하 매핑 프레임)은 제6 객체(11-6)를 온전히 갖는다. 따라서, 제6 객체(11-6)에 대한 래퍼 프레임의 프레임 값은 16으로 기준 프레임(RF1, RF2)의 프레임 값 15보다 크다. 동일하게, 제7 객체(11-7)의 대응하는 래퍼 프레임은 매핑 프레임(MF1, MF2)을 서브 프레임으로 하는 17-프레임(H1)이다. 이 경우, 제6 객체(11-6) 및 제7 객체(11-7)는 하나의 기준 프레임(RF1 내지 RF2) 내에 위치할 수 없고, 하나의 객체(11-6, 11-7)에 대해 복수의 기준 프레임(RF1 내지 RF3)이 설정되게 된다. 즉, 상술한 바와 같이 포인터(30) 값들의 하위 비트, 예를 들어, 최소 유효 비트의 값들을 0으로 처리하면, 원래의 의도한 기준 프레임(RF1 내지 RF3)이 아닌 다른 기준 프레임을 지시하게 될 수도 있다. 또한, 기준 프레임(RF1 내지 RF3)의 비트 수는 각각의 매핑 프레임(MF1 내지 MF2)의 시작 주소로부터 객체(11-6, 1107)에 대한 오프셋을 저장할 수 없다.
이와 같은 문제점을 해결하기 위해, 포인터 생성부(110)는 기준 프레임(RF1 내지 RF3)보다 큰 객체(11-6, 11-7)에 대한 포인터(30)의 생성을 위해, 도 10에 도시된 바와 같이 매핑 프레임(MF1, MF2) 및 매핑 구역(40)을 더 이용할 수 있다.
포인터 생성부(110)는, 도 9에 도시된 바와 같이, 래퍼 프레임 값이 기준 프레임의 프레임 값보다 상대적으로 큰 객체(11-6, 11-7)의 경우, 객체(11-6, 11-7) 각각을 소정의 매핑 프레임(MF1, MF2)에 매핑시킬 수 있다. 이 경우, 매핑 프레임(MF1, MF2)은 기준 프레임(RF1 내지 RF3)을 서브 프레임으로 갖는 프레임일 수 있으며, 특히 프레임 값이 기준 프레임(RF1 내지 RF3)의 프레임 값보다 1이 더 큰 프레임일 수 있다. 객체, 예를 들어 제6 객체(11-6)의 래퍼 프레임의 프레임 값이 제1 매핑 프레임(MF1)의 프레임 값과 동일한 경우, 제6 객체(11-6)를 제1 매핑 프레임(MF1)에 매핑시킨다. 한편, 상황에 따라서, 객체, 일례로 제7 객체(11-6)의 래퍼 프레임(H1)이 매핑 프레임(MF1, MF2)의 프레임 값보다 더 큰 프레임 값을 갖을 수도 있다. 이 경우, 포인터 생성부(110)는 제7 객체(11-7)를 프레임 값이 큰 프레임(H1)의 서브 프레임(MF1, MF2) 중 어느 하나에 매핑시킬 수 있다. 예를 들어, 제7 객체(11-7)를 대응하는 프레임(H1)에 대한 선행(하위)의 매핑 프레임(즉, 제1 매핑 프레임(MF1))에 매핑시킬 수 있다. 따라서, 제7 객체(11-7)의 경우, 래퍼 프레임(H1)이 17-프레임임에도 불구하고 제7 객체(11-7)에 대응하는 매핑 프레임은 제1 매핑 프레임(MF1)일 수 있다.
도 10에 도시된 바와 의하면, 매핑 구역(40)은 복수의 매핑 어레이(41, 42)를 포함할 수 있다. 이 경우, 각각의 매핑 어레이(41, 42)는 각각의 매핑 프레임(MF1, MF2)에 대응되어 마련된다. 예를 들어, 제1 매핑 어레이(41)는 제1 매핑 프레임(MF1)에 대응되고, 제2 매핑 어레이(42)는 제2 매핑 프레임(MF2)에 대응되어 마련될 수 있다. 즉, 제1 매핑 프레임(MF1)에 대응되는 객체(11-6, 11-7)는 제1 매핑 어레이(41)에 매핑되고 제2 매핑 프레임(MF2)에 대응되는 객체(미도시)는 제2 매핑 어레이(42)에 매핑될 수 있다. 따라서, 상술한 바와 같이, 각각의 객체(11-6, 11-7)에 대한 매핑 프레임, 일례로 제1 매핑 프레임(MF1)이 결정되면, 각각의 객체(11-6, 11-7)는 대응하는 어레이(40: 41, 42), 일례로 제1 매핑 어레이(41)에 매핑되게 된다.
매핑 어레이(40), 일례로 제1 매핑 어레이(41)는 적어도 하나의 매핑 엔트리(41-0 내지 41-48)를 포함할 수 있다. 예를 들어, 제1 매핑 어레이(41)는 49개의 엔트리(41-0 내지 41-48)를 포함할 수 있다. 그러나, 매핑 엔트리(41-0, 41-48, 42-0)의 개수는 이에 한정되는 것은 아니며, 설계자의 선택이나 시스템 환경 등에 따라 다양하게 결정될 수 있다.
각 매핑 엔트리(41-0 내지 41-48)에는, 매핑 어레이(41)에 매핑된 객체(11-6, 11-7)에 대한 정보가 기록될 수 있다. 여기서, 각각의 매핑 엔트리(41-0 내지 41-8)에 기록되는 정보는 대응하는 객체(11-6, 11-7)에 대한 메타데이터 저장 공간(230)의 위치(예를 들어, 헤더(202b)의 주소)를 포함할 수 있다.
한편, 도 10에 도시된 바와 같이, 서로 상이한 객체(11-6, 11-7)가 동일한 매핑 프레임(MF1)에 매핑된 경우, 서로 상이한 객체(11-6, 11-7)에 대한 정보 역시 동일한 매핑 어레이(41)에 매핑될 수 있다. 이 경우에 있어서, 각각의 객체(11-6, 11-7)의 식별은 각각의 객체(11-6, 11-7)에 대응하는 프레임 값을 이용하여 수행될 수 있다. 프레임 값이 기준 프레임의 프레임 값(예를 들어, 15)보다 큰 경우(즉, N>15), 동일한 프레임 값을 갖는 여러 객체(미도시)가 하나의 매핑 어레이(41, 42)에 매핑되진 않는다. 이런 이유로 프레임 값을 이용하여 매핑 어레이(41, 42)를 식별하는 것이 가능하다. 예를 들어, 매핑 어레이(41) 내의 복수의 엔트리(41-0 내지 41-8) 각각에는 서로 상이한 프레임 값을 갖는 복수의 객체(11-6, 11-7) 각각의 메타데이터 저장 공간(230)의 위치가 저장될 수 있으며, 이 경우, 복수의 객체(11-6, 11-7) 각각의 메타데이터 저장 공간(230)의 위치가 저장되는 복수의 엔트리(41-0 내지 41-8)는 각 객체(11-6, 11-7)의 프레임 값에 대응하여 결정된 것일 수 있다. 이에 따라 프레임 값을 이용하여 각각의 객체(11-6, 11-7)에 대응하는 적어도 하나의 엔트리(41-0 내지 41-8)의 위치를 식별하여 정할 수 있게 된다.
포인터 생성부(110)는 동일한 어레이(41) 내의 서로 상이한 객체(11-6, 11-7)를 식별할 수 있도록 각각의 객체(11-6, 11-7)의 프레임 값을 상대적 위치 정보로 포인터(30)에 부가할 수 있다.
결론적으로, 포인터 생성부(110)는, 기준 프레임(RF1 내지 RF3)보다 큰 래퍼 프레임을 가지는 객체(11-6, 11-7)와 관련하여, 각 객체(11-6, 11-7)의 메타데이터 저장 공간(230)의 위치를 각 객체(11-6, 11-7)의 프레임 값에 대응하는 매핑 어레이(41) 내의 엔트리(41-0 내지 41-8)에 저장하고, 아울러 포인터(30)에 프레임 값을 부가할 수 있다.
실시예에 따라서, 포인터 생성부(110)는 소정의 객체(11-6, 11-7)에 대응하는 래퍼 프레임의 프레임 값이 기준 프레임(RF1 내지 RF3)의 프레임 값보다 크다는 정보를 플래그 정보로 제3 구역(35)에 더 부가할 수도 있다.
이와 같이 포인터(30)가 생성되면, 위치 결정부(130)는 생성된 포인터(30)를 기반으로 객체(11-6, 11-7)의 위치를 결정할 수 있다.
구체적으로, 위치 결정부(130)는, 예를 들어 제3 구역(35)의 플래그 정보를 기반으로 소정의 객체(11-6, 11-7)에 대응하는 래퍼 프레임의 프레임 값이 기준 프레임(RF1 내지 RF3)의 프레임 값보다 큰지 여부를 확인한다. 만약 소정의 객체(11-6, 11-7)에 대응하는 래퍼 프레임의 프레임 값이 기준 프레임(RF1 내지 RF3)의 프레임 값보다 크면, 시작 주소를 결정한다. 여기서 시작 주소는 매핑 프레임(MF1, MF2)의 시작 주소일 수도 있고, 래퍼 프레임의 시작 주소일 수도 있으며, 또한 기준 프레임(RF1 내지 RF3)의 시작 주소일 수도 있다.
매핑 프레임(MF1, MF2) 등의 시작 주소를 결정하기 위해 포인터(30)의 최소 유효 N 비트의 값들을 0으로 변환하여 획득될 수 있다. 이어서, 매핑 어레이(41, 42)의 주소가 획득된다. 매핑 어레이(41, 42)의 주소 획득을 위해서, 매핑 프레임(MF1, MF2)의 프레임 값(즉, log2(매핑 프레임의 크기))가 이용될 수 있으며, 또한 사용자 공간의 시작 주소로부터의 거리도 더 이용될 수 있다. 순차적으로 포인터(30)에서 각각의 객체(11-6, 11-7)의 프레임 값을 추출하고 프레임 값을 이용하여 매핑 어레이(41, 42) 내에서의 대응하는 적어도 하나의 엔트리(41-0 내지 41-48)의 위치를 획득하게 된다. 적어도 하나의 엔트리(41-0 내지 41-8)의 주소가 획득되면, 적어도 하나의 엔트리(41-0 내지 41-8)로부터 기록되어 있는 메타데이터 저장 공간의 위치에 대한 정보(예를 들어, 시작 주소 등)를 호출할 수 있게 되며, 이에 따라 적어도 하나의 엔트리(41-0 내지 41-48)에 저장된 객체(11-6, 11-7)에 대응하는 메타데이터 저장 공간(230), 일례로 헤더(202b)의 위치(주소)가 획득될 수 있게 된다.
일 실시예에 의하면, 엔트리의 주소의 획득을 위해 하기의 연산이 수행될 수도 있다.
wrapperFrameBase = p & ((~0)<<N);
shadow_index =
((wrapperFrameBase - divisionBase_of_userspace)/(1ULL<<16));
DivisionT *M = TABLE + shadow_index;
EntryT *m = M->divisionArray;
EntryT *myentry = m+(N-(log division_size));
여기서, 포인터 p 값은 태그된 정보(즉 제2 및 제3 구역(33, 35)의 정보)를 삭제한 값이다. 테이블은 전체 프로그램에 대한 전체 어레이를 의미한다.
이하, 도 11 및 도 12를 참조하여, 상술한 메타 정보 처리 장치(1)의 동작의 효과에 대해 설명하도록 한다.
도 11a와 도 11b는 메타데이터 처리 장치에 대한 정규화된 런타임 오버헤드에 대한 실험 결과와 정규화된 메모리 오버헤드의 결과 그래프이다. 도 11에서 저장만 수행(store-only)은 어레이 형태의 메모리 객체에 쓰기 명령어가 수행되는 상황에서만 메모리 에러를 검사하는 경우에서 정규화된 런타임 오버헤드(normalized runtime overhead)를 측정한 결과이고, 전부 수행(Full)은 어레이 형태의 메모리 객체에 쓰기 명령어가 수행되는 상황 및 읽기 명령어가 수행되는 상황 양자 모두에서 메모리 에러를 검사하는 경우에서의 정규화된 런타임 오버헤드를 측정한 결과이다.
상술한 바와 같이 생성 및 이용되는 포인터(30)를 기반으로 프로그램을 구현하고, 실행 시간에 자동으로 메모리 에러를 감지하여, 도 11에 도시된 바와 같이, 메타데이터 처리 장치(1)에 대한 정규화된 런타임 오버헤드에 대한 실험 결과를 획득할 수 있다. 도 11에 도시된 바에 의하면, 장치(1)의 메모리 오버헤드는 다른 방식에 비해 낮고 안정적이었다. 평균 메모리 오버헤드는 저장만 수행하는 경우 및 전부 수행하는 경우 양자에 있어서 대략 22%였으며, 대부분의 경우에서 평균 오버헤드가 50%를 초과하지 않는다.
도 12는 명령어 1000 개 당 L1 D-캐시(d-cache) 메모리의 로드 미스(load miss)의 정규화된 오버헤드의 실험 결과를 도시한 그래프 도면이다.
도 12를 참조하면, 정규화된 L1 D-캐시의 로드 미스의 평균 값은 저장만 수행에서는 0.76로 측정되고, 전부 수행에서는 0.53으로 측정되었다. 즉, 미스 비율이 감소하였다. 다시 말해서, 다른 장치와 비교하였을 때, 로드 미스의 오버헤드가 감소하였다. 또한, 벤치 마크 사이의 차이가 크게 발생되지 않았다. 이는 상술한 메타데이터 처리 장치(1)가 기존 방법보다 캐시 메모리의 효율성이 높다는 것을 의미한다.
이하, 도 13 및 도 14를 참조하여, 객체의 메타 정보 처리 방법의 일 실시예에 대해서 설명하도록 한다.
도 13은 객체의 메타 정보 처리 방법에 있어서 포인터를 생성하는 과정의 일 실시예에 대한 흐름도이다.
도 13에 도시된 바에 의하면, 먼저 소정의 객체에 대해서 객체에 대응하는 래퍼 프레임이 결정된다(310). 래퍼 프레임은 객체를 포함하는 가장 작은 크기의 프레임을 의미한다. 이 경우, 객체의 시작 주소는 래퍼 프레임의 서브 프레임 중에서 선행하는 서브 프레임(하위 서브 프레임)에 대응하고, 객체의 마지막 주소는 래퍼 프레임의 서브 프레임 중에서 후행하는 서브 프레임(상위 서브 프레임)에 대응하게 된다. 여기서, 하위 및 상위 서브 프레임은 래퍼 프레임의 서브 프레임 중에서 가장 큰 서브 프레임의 하위 및 상위 서브 프레임일 수 있다. 래퍼 프레임은 프레임 값을 갖는다. 예를 들어, 래퍼 프레임이 2의 i제곱근의 크기를 갖는 i-프레임(i는 0 또는 자연수)인 경우, 래퍼 프레임의 프레임 값은 i로 주어진다.
순차적으로 래퍼 프레임의 프레임 값(i)과 미리 정의된 기준 프레임의 프레임 값(N)이 비교될 수 있다(312). 기준 프레임은 설계자 또는 사용자 등에 의해 미리 정의된 것으로, 기준 프레임의 프레임 값은 포인터에 상대적 위치 정보가 기록될 공간(제2 구역)의 크기에 대응하여 결정될 수 있다. 만약 제2 구역의 크기가 N 비트라면, 기준 프레임의 프레임 값은 이에 대응하여 N으로 정의될 수 있다. 여기서, N은 예를 들어 15를 포함할 수 있으나, 이에 한정되는 것은 아니다.
만약 래퍼 프레임의 프레임 값(i)이 기준 프레임의 프레임 값(N)보다 작거나 같다면(314의 예), 기준 프레임의 시작 주소 및 메타데이터 저장 공간 사이의 오프셋이 포인터의 제2 구역에 추가된다(316). 다시 말해서, 이들 사이의 오프셋이 상대적 위치 정보로 포인터에 부가된다.
이 경우, 실시예에 따라서, 포인터의 다른 구역(일례로 제1 구역)에는 객체를 지시하는 값(즉, 객체의 주소)가 부가될 수도 있다. 또한, 포인터의 소정의 구역(일례로 제3 구역)에는 비교 결과에 대한 정보가 플래그 정보로 기록될 수 있다. 즉, 래퍼 프레임의 프레임 값(i)이 기준 프레임의 프레임 값(N)보다 작거나 같다는 정보가 포인터의 제3 구역에 저장될 수 있다. 여기서, 포인터의 제3 구역은 포인터의 가장 마지막(최상위) 비트를 포함할 수 있다.
반대로 만약 래퍼 프레임의 프레임 값(i)이 기준 프레임의 프레임 값(N)보다 크다면(314의 아니오), 래퍼 프레임의 프레임 값을 기반으로 매핑 구역에 객체가 매핑될 수 있다(318).
이 경우, 매핑 프레임이 이용될 수 있다. 래퍼 프레임의 프레임 값이 래퍼 프레임을 서브 프레임으로 갖는 소정의 매핑 프레임의 프레임 값(예를 들어, 기준 프레임의 프레임 값+1)과 동일하면, 래퍼 프레임에 대응하는 객체는 소정의 매핑 프레임에 매핑된다. 또한, 래퍼 프레임의 프레임 값이 소정의 매핑 프레임의 프레임 값보다 큰 경우에도, 래퍼 프레임에 대응하는 객체는 소정의 매핑 프레임에 매핑될 수 있다. 즉, 예를 들어, 매핑 프레임이 16-프레임이고, 래퍼 프레임이 17-프레임인 경우에도, 17-프레임에 대응되는 객체는 16-프레임인 매핑 프레임에 매핑될 수 있다.
매핑 프레임이 결정되면, 매핑 구역 내의 적어도 하나의 매핑 어레이 중에서 각각의 매핑 프레임에 대응하는 매핑 어레이가 선택된다.
이어서, 선택된 매핑 어레이 중 어느 하나의 엔트리에 객체에 대응하는 메타데이터의 저장 공간(예를 들어, 객체가 저장된 공간의 헤더)의 위치(주소)가 기록될 수 있다.
메타데이터가 기록된 엔트리의 식별은 상술한 바와 같이 래퍼 프레임의 프레임 값을 이용하여 수행될 수 있다. 포인터에는 엔트리의 식별을 위해서 래퍼 프레임의 프레임 값이 포인터에 상대적 위치 정보로 부가될 수 있다.
상술한 과정을 통하여 포인터가 생성된다. 포인터는 후술하는 바와 같이 필요에 따라 호출되고, 호출된 포인터를 기반으로 메타데이터의 위치에 대한 정보가 획득될 수 있다.
도 14는 객체의 메타 정보 처리 방법에 있어서 포인터로부터 객체 및 메타데이터의 위치를 결정하는 과정의 일 실시예에 대한 흐름도이다.
도 14에 도시된 바와 같이, 포인터가 호출되면 포인터에 대응하는 객체의 래퍼 프레임의 크기가 결정될 수 있다(320).
래퍼 프레임의 프레임 값과 미리 정의된 기준 프레임의 프레임 값 사이의 관계가 판단될 수 있다(321). 예를 들어, 래퍼 프레임의 프레임 값(i)이 기준 프레임의 프레임 값(N)보다 작거나 같은지 또는 만약 래퍼 프레임의 프레임 값(i)이 기준 프레임의 프레임 값(N)보다 큰지 여부가 판단될 수 있다. 이의 판단은 포인터의 제3 구역 등을 참조하여 수행될 수 있다.
만약 래퍼 프레임의 프레임 값(i)이 기준 프레임의 프레임 값(N)보다 작거나 동일하다면(321의 예), 포인터를 이용하여 기준 프레임의 시작 주소가 결정된다(322). 예를 들어, 최소 유효 비트(예를 들어, 15 비트)의 값들을 0으로 처리하여 기준 프레임의 시작 주소가 결정될 수 있다.
순차적으로 기준 프레임의 시작 주소가 결정되면, 결정된 기준 프레임의 시작 주소와, 제2 구역에서 호출된 오프셋을 이용하여 메타 메타데이터 저장 공간의 위치가 결정될 수 있다(323). 즉, 결정된 기준 프레임의 시작 주소로부터 오프셋이 부가된 위치가 메타데이터의 저장 공간의 위치로 결정될 수 있다.
필요에 따라, 메타데이터의 저장 공간의 위치가 결정되면, 이를 기반으로 객체의 위치가 더 결정될 수도 있다(328). 예를 들어, 메타데이터 저장 공간이 헤더인 경우라면, 헤더의 크기를 이용하여 객체의 저장된 공간의 시작 주소를 획득할 수 있게 된다.
한편, 만약 래퍼 프레임의 프레임 값(i)이 기준 프레임의 프레임 값(N)보다 크면(321의 아니오), 시작 주소가 결정된다(324). 여기서, 시작 주소는 매핑 프레임의 시작 주소, 래퍼 프레임의 시작 주소 또는 기준 프레임의 시작 주소를 포함할 수 있다. 매핑 프레임 등의 시작 주소 결정은, 최소 유효 N 비트의 값들을 0으로 변환함으로써 수행될 수도 있다.
시작 주소가 결정되면, 객체가 매핑된 매핑 어레이의 위치(주소)가 결정될 수 있다. 매핑 어레이의 위치를 결정하기 위해, 매핑 프레임의 프레임 값과, 사용자 공간의 시작 주소로부터의 거리가 이용될 수 있다(325).
매핑 어레이가 결정되면, 메타데이터 저장 공간의 위치에 대한 정보가 기록된 매핑 엔트리의 위치가 결정될 수 있다(326). 매핑 엔트리의 위치를 결정하기 위해서 포인터의 제2 구역에 저장된 래퍼 프레임의 프레임 값이 매핑 엔트리 위치 결정과 동시에, 매핑 엔트리 위치 결정의 이전 또는 이후에 독출될 수 있다. 상술한 바와 같이, 래퍼 프레임의 프레임 값은 객체 및/또는 객체가 매핑된 엔트리의 식별자로 이용될 수 있으므로, 래퍼 프레임의 프레임 값을 기반으로 매핑 엔트리의 위치가 결정될 수 있다.
매핑 엔트리의 위치가 결정되면 매핑 엔트리로부터 매핑 엔트리에 기록되어 있는 메타데이터 저장 공간의 위치(실시 예에 따라, 매핑 엔트리에는 메타데이터 자체가 저장되어 있을 수도 있음)에 대한 정보를 획득할 수 있다(327).
상술한 바와 동일하게 메타데이터 저장 공간의 위치가 결정되면, 이를 기반으로 객체의 위치도 결정할 수 있게 된다(328).
도 13 및 도 14에 도시된 각 단계(310 내지 318, 320 내지 328)는 상술한 메타데이터 처리 장치(10)에 의해 수행될 수 있으며, 보다 상세하게는 메타데이터 처리 장치(10)의 프로세서(100)에 의해 수행될 수 있다. 실시예에 따라서, 하나의 메타데이터 처리 장치(10) 또는 하나의 프로세서(100)가 상술한 모든 단계(310 내지 318, 320 내지 328)을 수행할 수도 있고, 또는 둘 이상의 메타데이터 처리 장치(10) 및/또는 둘 이상의 프로세서(100)가 상술한 단계(310 내지 318, 320 내지 328)의 전부 또는 일부를 수행하는 것도 가능하다.
상술한 실시예에 따른 메타데이터 처리 방법(예를 들어, 포인터 생성 과정 및/또는 및 객체와 객체 헤더의 위치 결정 과정)은 컴퓨터 장치에 의해 구동될 수 있는 프로그램의 형태로 구현될 수 있다. 여기서 프로그램은 프로그램 명령, 데이터 파일 및 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 프로그램은 기계어 코드나 고급 언어 코드를 이용하여 설계 및 제작된 것일 수 있다. 프로그램은 상술한 방법을 구현하기 위하여 특별히 설계된 것일 수도 있고, 컴퓨터 소프트웨어 분야에서 통상의 기술자에게 기 공지되어 사용 가능한 각종 함수나 정의를 이용하여 구현된 것일 수도 있다. 또한, 컴퓨터 장치는 프로그램의 기능을 실현 가능하게 하는 프로세서나 메모리 등을 포함하여 구현된 것일 수 있으며, 필요에 따라 통신 장치를 더 포함할 수도 있다.
상술한 객체의 메타데이터 처리 방법을 구현하기 위한 프로그램은, 컴퓨터에 의해 판독 가능한 기록 매체에 기록될 수 있다. 컴퓨터에 의해 판독 가능한 기록 매체는, 예를 들어, 하드 디스크나 플로피 디스크와 같은 자기 디스크 저장 매체, 자기 테이프, 콤팩트 디스크나 디브이디와 같은 광 기록 매체, 플롭티컬 디스크와 같은 자기-광 기록 매체 및 롬, 램 또는 플래시 메모리 등과 같은 반도체 저장 장치 등 컴퓨터 등의 호출에 따라 실행되는 특정 프로그램을 저장 가능한 다양한 종류의 하드웨어 장치를 포함할 수 있다.
이상 객체의 메타데이터 처리 장치 및 방법의 여러 실시예에 대해 구체적으로 설명하였으나, 객체의 메타데이터 처리 장치 및 방법은 오직 상술한 실시예에 한정되는 것은 아니다. 해당 기술 분야에서 통상의 지식을 가진 자가 상술한 실시예를 기초로 수정 및 변형하여 구현 가능한 다양한 객체의 메타데이터 처리 장치나 방법 역시 상술한 객체의 메타데이터 처리 장치 및 방법의 일례가 될 수 있다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성 요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나 다른 구성 요소 또는 균등물에 의하여 대치되거나 또는 치환되더라도 상술한 객체의 메타데이터 처리 장치 및 방법의 일 실시예가 될 수 있다.
1: 메타 데이터 처리 장치 11: 객체
12: 메타데이터 30: 포인터
31: 제1 구역 32: 제2 구역
33: 제3 구역 40: 매핑 구역
100: 프로세서 110: 포인터 생성부
130: 위치 결정부 200: 저장부
201: 메모리 공간 202: 저장 블록
202a: 데이터 저장 블록 202b: 헤더
210: 객체 저장 공간 230: 메타데이터 저장 공간
250: 포인터 저장 공간

Claims (22)

  1. 객체를 객체 저장 공간에 저장하고, 상기 객체의 메타데이터를 상기 객체 저장 공간에 대응하는 메타데이터 저장 공간에 저장하는 저장부; 및
    포인터에 상대적 위치 정보를 부가하거나 또는 상기 포인터를 기반으로 상기 메타데이터 저장 공간의 위치를 결정하는 프로세서를 포함하고,
    상기 상대적 위치 정보는 상기 메타데이터 저장 공간까지의 거리를 포함하는,
    메타데이터 처리 장치.
  2. 제1항에 있어서,
    상기 프로세서는 2의 i(i는 자연수) 제곱 크기이며 2의 i 제곱 크기로 정렬된 메모리 블록을 갖는 i-프레임을 기반으로 상기 포인터에 상대적 위치 정보를 부가하거나 또는 상기 메타데이터 저장 공간의 위치를 결정하고,
    i는 프레임 값인,
    메타데이터 처리 장치.
  3. 제2항에 있어서,
    상기 i-프레임은 상기 객체를 포함하는 가장 작은 크기의 프레임인 래퍼 프레임을 포함하는,
    메타데이터 처리 장치.
  4. 제3항에 있어서,
    상기 프로세서는, 상기 래퍼 프레임의 프레임 값이 미리 정의된 기준 프레임의 프레임 값보다 작거나 또는 미리 정의된 기준 프레임의 프레임 값과 동일한 경우, 상기 기준 프레임의 시작 주소와 상기 메타데이터 저장 공간 사이의 오프셋을 상기 포인터에 상기 상대적 위치 정보로 부가하는,
    메타데이터 처리 장치.
  5. 제4항에 있어서,
    상기 프로세서는, 상기 래퍼 프레임의 프레임 값이 상기 기준 프레임의 프레임 값보다 작거나 또는 같은지 여부에 대한 정보를 상기 포인터에 더 부가하는,
    메타데이터 처리 장치.
  6. 제5항에 있어서,
    상기 프로세서는, 상기 객체에 대응하는 기준 프레임의 시작 주소를 결정하고, 상기 기준 프레임의 시작 주소 및 상기 오프셋을 기반으로 상기 메타데이터 저장 공간의 위치를 결정하는,
    메타데이터 처리 장치.
  7. 제3항에 있어서,
    상기 프로세서는, 상기 래퍼 프레임의 프레임 값이 기준 프레임의 프레임 값보다 큰 경우, 상기 래퍼 프레임의 프레임 값을 상기 포인터에 상기 상대적 위치 정보로 부가하는,
    메타데이터 처리 장치.
  8. 제7항에 있어서,
    상기 저장부는 각각 적어도 하나의 매핑 엔트리를 포함하는 적어도 하나의 매핑 어레이를 포함하고,
    상기 프로세서는 상기 래퍼 프레임의 프레임 값을 이용하여 상기 적어도 하나의 매핑 어레이 중 대응하는 매핑 어레이를 결정하고, 결정된 매핑 어레이에 상기 래퍼 프레임에 대응하는 객체를 매핑하는,
    메타데이터 처리 장치.
  9. 제8항에 있어서,
    상기 프로세서는 상기 매핑 프레임의 시작 주소를 획득하고, 상기 시작 주소로부터의 거리 및 상기 매핑 어레이의 크기로부터 상기 매핑 어레이에 대응하는 주소를 결정하고, 상기 래퍼 프레임의 프레임 값을 기반으로 상기 매핑 어레이 내의 상기 매핑 엔트리의 위치를 결정하고, 상기 매핑 엔트리를 이용하여 상기 메타데이터 저장 공간의 위치를 결정하는,
    메타데이터 처리 장치.
  10. 객체의 메타데이터가 저장된 메타데이터 저장 공간까지의 거리를 포함하는 상대적 위치 정보를 포인터에 부가하되, 상기 메타데이터 저장 공간은 상기 객체가 저장되는 객체 저장 공간에 대응하는 단계; 및
    상기 포인터를 기반으로 상기 메타데이터 저장 공간의 위치를 결정하는 단계를 포함하는 메타데이터 처리 방법.
  11. 제10항에 있어서,
    상기 객체의 메타데이터가 저장된 메타데이터 저장 공간까지의 거리를 포함하는 상대적 위치 정보를 포인터에 부가하는 단계는 2의 i 제곱 크기이며 2의 i 제곱 크기로 정렬된 메모리 블록을 갖는 i-프레임을 기반으로 상기 포인터에 상대적 위치 정보를 부가하는 단계를 포함하되,
    여기서 i는 프레임 값이고 자연수인,
    메타데이터 처리 방법.
  12. 제11항에 있어서,
    상기 i-프레임은 상기 객체를 포함하는 가장 작은 크기의 프레임인 래퍼 프레임을 포함하되, 상기 객체의 시작 주소 및 마지막 주소는 상기 래퍼 프레임의 선행 서브 프레임 및 후행 서브 프레임 각각에 대응하는,
    메타데이터 처리 방법.
  13. 제12항에 있어서,
    상기 2의 i 제곱 크기이며 2의 i 제곱 크기로 정렬된 메모리 블록을 갖는 i-프레임을 기반으로 상기 포인터에 상대적 위치 정보를 부가하는 단계는,
    상기 래퍼 프레임의 프레임 값이 미리 정의된 기준 프레임의 프레임 값보다 작거나 또는 미리 정의된 기준 프레임의 프레임 값과 동일한 경우, 상기 기준 프레임의 시작 주소와 상기 메타데이터 저장 공간 사이의 오프셋을 상기 포인터에 상기 상대적 위치 정보로 부가하는 단계를 포함하는,
    메타데이터 처리 방법.
  14. 제13항에 있어서,
    상기 2의 i 제곱 크기이며 2의 i 제곱 크기로 정렬된 메모리 블록을 갖는 i-프레임을 기반으로 상기 포인터에 상대적 위치 정보를 부가하는 단계는 상기 래퍼 프레임의 프레임 값이 상기 기준 프레임의 프레임 값보다 작거나 또는 같은지 여부에 대한 정보를 상기 포인터에 더 부가하는 단계를 더 포함하는,
    메타데이터 처리 방법.
  15. 제14항에 있어서,
    상기 포인터를 기반으로 상기 메타데이터 저장 공간의 위치를 결정하는 단계는,
    상기 객체에 대응하는 기준 프레임의 시작 주소를 결정하는 단계; 및
    상기 기준 프레임의 시작 주소 및 상기 오프셋을 기반으로 상기 메타데이터 저장 공간의 위치를 결정하는 단계를 포함하는,
    메타데이터 처리 방법.
  16. 제12항에 있어서,
    상기 2의 i 제곱 크기이며 2의 i 제곱 크기로 정렬된 메모리 블록을 갖는 i-프레임을 기반으로 상기 포인터에 상대적 위치 정보를 부가하는 단계는,
    상기 래퍼 프레임의 프레임 값이 기준 프레임의 프레임 값보다 큰 경우, 상기 래퍼 프레임의 프레임 값을 상기 포인터에 상기 상대적 위치 정보로 부가하는 단계를 포함하는,
    메타데이터 처리 방법.
  17. 제16항에 있어서,
    상기 저장부는 각각 적어도 하나의 매핑 엔트리를 포함하는 적어도 하나의 매핑 어레이를 포함하고,
    상기 래퍼 프레임의 프레임 값을 상기 포인터에 상기 상대적 위치 정보로 부가하는 단계는,
    상기 래퍼 프레임의 프레임 값을 이용하여, 상기 적어도 하나의 매핑 어레이 중 대응하는 매핑 어레이를 결정하는 단계; 및
    결정된 상기 매핑 어레이에 상기 래퍼 프레임에 대응하는 객체를 매핑하는 단계를 포함하는,
    메타데이터 처리 방법.
  18. 제17항에 있어서,
    상기 포인터를 기반으로 상기 메타데이터 저장 공간의 위치를 결정하는 단계는,
    상기 매핑 프레임의 시작 주소를 획득하는 단계;
    상기 시작 주소로부터의 거리 및 상기 매핑 어레이의 크기로부터 상기 매핑 어레이에 대응하는 주소를 결정하는 단계;
    상기 래퍼 프레임의 프레임 값을 기반으로 상기 매핑 어레이 내의 상기 매핑 엔트리의 위치를 결정하는 단계; 및
    상기 매핑 엔트리를 이용하여 상기 메타데이터 저장 공간의 위치를 결정하는 단계를 포함하는,
    메타데이터 처리 방법.
  19. 제17항에 있어서,
    상기 포인터를 기반으로 상기 메타데이터 저장 공간의 위치를 결정하는 단계는,
    상기 매핑 프레임의 시작 주소를 획득하는 단계;
    상기 시작 주소로부터의 거리 및 상기 매핑 어레이의 크기로부터 상기 매핑 어레이에 대응하는 주소를 결정하는 단계;
    상기 래퍼 프레임의 프레임 값을 기반으로 상기 매핑 어레이 내의 상기 매핑 엔트리의 위치를 결정하는 단계; 및
    상기 매핑 엔트리에 상기 메타데이터를 저장하는 단계를 포함하는,
    메타데이터 처리 방법.
  20. 객체에 대응하는 래퍼 프레임이 기준 프레임의 서브 프레임인지 여부가 결정되되, 상기 객체를 포함하는 가장 작은 크기의 메모리 블록을 갖는 프레임인 단계; 및
    상기 래퍼 프레임이 기준 프레임의 서브 프레임인 경우, 상기 기준 프레임의 시작 주소 및 상기 메타데이터 저장 공간 사이의 오프셋을 상기 포인터에 상기 상대적 위치 정보로 부가하는 단계를 포함하는,
    메타데이터 처리 방법.
  21. 제20항에 있어서,
    상기 기준 프레임의 상기 래퍼 프레임의 서브 프레임인 경우, 상기 래퍼 프레임의 프레임 값을 상기 포인터에 상기 상대적 위치 정보로 부가하는 단계를 더 포함하는,
    메타데이터 처리 방법.
  22. 제21항에 있어서,
    상기 래퍼 프레임의 프레임 값을 상기 포인터에 상기 상대적 위치 정보로 부가하는 단계는 상기 매핑 구역에 상기 i-프레임에 대응하는 객체를 매핑하는 단계를 포함하는,
    메타데이터 처리 방법.
KR1020190028256A 2019-03-12 2019-03-12 객체의 메타데이터 처리 장치 및 방법 KR102172219B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020190028256A KR102172219B1 (ko) 2019-03-12 2019-03-12 객체의 메타데이터 처리 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190028256A KR102172219B1 (ko) 2019-03-12 2019-03-12 객체의 메타데이터 처리 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20200109131A true KR20200109131A (ko) 2020-09-22
KR102172219B1 KR102172219B1 (ko) 2020-10-30

Family

ID=72707071

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190028256A KR102172219B1 (ko) 2019-03-12 2019-03-12 객체의 메타데이터 처리 장치 및 방법

Country Status (1)

Country Link
KR (1) KR102172219B1 (ko)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006512643A (ja) * 2002-12-24 2006-04-13 エルジー エレクトロニクス インコーポレーテッド 二重ジャーナリングの保存方法及びその記憶媒体
KR20070096429A (ko) * 2006-03-24 2007-10-02 부산대학교 산학협력단 빠른 마운팅을 지원하는 낸드 플래시 메모리에 적용되는파일시스템
KR20090066071A (ko) 2007-12-18 2009-06-23 재단법인서울대학교산학협력재단 메타 데이터 관리 시스템 및 방법
KR20090093265A (ko) * 2008-02-29 2009-09-02 한양대학교 산학협력단 비휘발성 랜덤 액세스 메모리를 이용한 스토리지 시스템,파일 시스템 및 데이터 관리 방법 그리고 기억장치
KR20160103839A (ko) * 2015-02-25 2016-09-02 주식회사 유엔진솔루션즈 메타데이터에 기반한 프레임워크를 제공하는 방법 및 장치
KR20180123265A (ko) 2017-05-08 2018-11-16 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006512643A (ja) * 2002-12-24 2006-04-13 エルジー エレクトロニクス インコーポレーテッド 二重ジャーナリングの保存方法及びその記憶媒体
KR20070096429A (ko) * 2006-03-24 2007-10-02 부산대학교 산학협력단 빠른 마운팅을 지원하는 낸드 플래시 메모리에 적용되는파일시스템
KR20090066071A (ko) 2007-12-18 2009-06-23 재단법인서울대학교산학협력재단 메타 데이터 관리 시스템 및 방법
KR20090093265A (ko) * 2008-02-29 2009-09-02 한양대학교 산학협력단 비휘발성 랜덤 액세스 메모리를 이용한 스토리지 시스템,파일 시스템 및 데이터 관리 방법 그리고 기억장치
KR20160103839A (ko) * 2015-02-25 2016-09-02 주식회사 유엔진솔루션즈 메타데이터에 기반한 프레임워크를 제공하는 방법 및 장치
KR20180123265A (ko) 2017-05-08 2018-11-16 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법

Also Published As

Publication number Publication date
KR102172219B1 (ko) 2020-10-30

Similar Documents

Publication Publication Date Title
US7984231B2 (en) Information recording medium access device, and data recording method
US20130254514A1 (en) Wear-leveling method, storage device, and information system
US20110202709A1 (en) Optimizing storage of common patterns in flash memory
US20130080787A1 (en) Memory storage apparatus, memory controller and password verification method
US7840877B2 (en) Mass storage system and method
WO2017143843A1 (zh) 元数据修复方法及装置
KR20100069240A (ko) 캐시 컨트롤을 위한 장치 및 방법
KR101351561B1 (ko) 빅 데이터 추출 시스템 및 방법
US9213486B2 (en) Writing new data of a first block size to a second block size using a write-write mode
US20100115004A1 (en) Backup system that stores boot data file of embedded system in different strorage sections and method thereof
US8726101B2 (en) Apparatus and method for tracing memory access information
KR102172219B1 (ko) 객체의 메타데이터 처리 장치 및 방법
US9009430B2 (en) Restoration of data from a backup storage volume
CN114253478B (zh) 一种计算raid校验盘位置的方法和装置
US11347860B2 (en) Randomizing firmware loaded to a processor memory
US20220318015A1 (en) Enforcing data placement requirements via address bit swapping
CN102567210B (zh) 闪存芯片数据分析环境重组方法和装置
US8276041B2 (en) Data integrity validation using hierarchical volume management
US9262264B2 (en) Error correction code seeding
JP2007140628A (ja) 情報処理装置、撮像装置、および情報処理方法、並びにコンピュータ・プログラム
US20090204776A1 (en) System for securing an access to flash memory device and method for the same
TWI709042B (zh) 用來進行關於容錯式磁碟陣列的映射資訊管理之方法與裝置以及儲存系統
CN102956270B (zh) 移动存储设备检测方法和装置
JP2006003971A (ja) 冗長化ドライブ群並びにこれを用いた書込み方法及び読出し方法
JP2009157441A (ja) 情報処理装置、ファイル再配置方法およびプログラム

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant