KR20170108421A - 메모리 카드로부터 파일을 읽는 방법 - Google Patents
메모리 카드로부터 파일을 읽는 방법 Download PDFInfo
- Publication number
- KR20170108421A KR20170108421A KR1020160032279A KR20160032279A KR20170108421A KR 20170108421 A KR20170108421 A KR 20170108421A KR 1020160032279 A KR1020160032279 A KR 1020160032279A KR 20160032279 A KR20160032279 A KR 20160032279A KR 20170108421 A KR20170108421 A KR 20170108421A
- Authority
- KR
- South Korea
- Prior art keywords
- card
- file
- read
- controller
- processing unit
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- 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
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/22—Microcontrol or microprogram arrangements
- G06F9/26—Address formation of the next micro-instruction ; Microprogram storage or retrieval arrangements
- G06F9/262—Arrangements for next microinstruction selection
- G06F9/268—Microinstruction selection not based on processing results, e.g. interrupt, patch, first cycle store, diagnostic programs
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Management Or Editing Of Information On Record Carriers (AREA)
- Navigation (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
본 발명은 메모리 카드로부터 파일을 읽는 방법에 관한 것이다. 본 발명의 방법은, 메모리 카드 호스트 제어기에 읽기 대상인 파일의 이름 및 버퍼 정보를 전달하는 단계, 읽기 대상인 파일의 위치를 획득하는 단계, 읽기 대상인 파일을 읽는 단계, 읽혀진 파일을 버퍼 메모리에 저장하는 단계, 그리고 읽기 대상인 파일의 읽기가 완료되었음을 알리는 인터럽트를 중앙 처리 장치로 전달하는 단계를 포함한다. 메모리 카드 호스트 제어기는 읽기 대상인 파일의 위치를 획득하는 단계 및 읽기 대상인 파일을 읽는 단계에서 발생하는 인터럽트들을 중앙 처리 장치로 전달하지 않고 자체적으로 처리한다.
Description
본 발명은 메모리 카드에 관한 것으로, 더 상세하게는 메모리 카드로부터 파일을 읽는 방법에 관한 것이다.
메모리 카드는 전자 장치들과 착탈 가능하게 제조된 저장 장치이다. 대표적인 메모리 카드의 예로 SD (Secure Digital), 미니 SD 카드, 마이크로 SD 카드 등(이하에서, SD 카드로 통칭됨)이 있다. SD 카드는 디지털 카메라, 스마트폰, 스마트패드 등과 같은 휴대용 전자 기기들에서 확장 또는 메인 저장 장치로 다양하게 사용되고 있다.
SD 카드는 오랜 시간 사용되어 왔으며, 따라서 현 시대의 전자 장치들에는 적합하지 않은 특징들을 갖는다. 예를 들어, SD 카드의 읽기 시에 과도하게 많은 인터럽트들이 발생하며, 따라서 SD 카드는 중앙 처리 장치의 자원을 과도하게 차지하는 단점을 갖는다. 이러한 단점을 개선하기 위하여 SD 카드의 스펙을 변경하면, 변경된 스펙은 기존의 SD 카드 및 기존의 SD 카드 호스트 제어기와 호환되지 않을 수 있다. 따라서, SD 카드 및 SD 카드 호스트 제어기의 스펙을 변경하지 않으면서도, SD 카드의 읽기 시에 과도하게 발생하는 인터럽트들의 수를 줄이는 새로운 장치 및 방법에 대한 연구가 절실하게 요구되고 있다.
본 발명의 목적은, 감소된 인터럽트를 유발하며 메모리 카드로부터 파일을 읽는 방법을 제공하는 데에 있다.
본 발명의 실시 예에 따른 메모리 카드로부터 파일을 읽는 방법은, 메모리 카드 호스트 제어기에 읽기 대상인 파일의 이름 및 버퍼 정보를 전달하는 단계, 상기 메모리 카드 호스트 제어기가 상기 메모리 카드의 파일 시스템을 읽어 상기 읽기 대상인 파일의 위치를 획득하는 단계, 상기 메모리 카드 호스트 제어기가 상기 획득된 위치를 이용하여 상기 메모리 카드로부터 상기 읽기 대상인 파일을 읽는 단계, 상기 메모리 카드 호스트 제어기가 상기 읽혀진 파일을 상기 버퍼 정보에 따라 버퍼 메모리에 저장하는 단계, 그리고 상기 메모리 카드 호스트 제어기가 상기 읽기 대상인 파일의 읽기가 완료되었음을 알리는 인터럽트를 상기 중앙 처리 장치로 전달하는 단계를 포함한다. 상기 메모리 카드 호스트 제어기는 상기 파일 시스템을 읽어 상기 읽기 대상인 파일의 위치를 획득하는 단계 및 상기 메모리 카드로부터 상기 읽기 대상인 파일을 읽는 단계에서 발생하는 인터럽트들을 상기 중앙 처리 장치로 전달하지 않고 자체적으로 처리하도록 구성된다.
본 발명에 따르면, SD 카드의 읽기 시에 발생하는 인터럽트들은 SD 카드 호스트 제어기에서 자체적으로 처리된다. 따라서, 감소된 인터럽트를 발생하며 중앙 처리의 장치의 더 적은 자원을 차지하는 메모리 카드로부터 파일을 읽는 방법이 제공된다.
도 1은 본 발명의 실시 예에 따른 전자 장치를 보여주는 블록도이다.
도 2는 도 1의 SD 카드의 구성을 보여준다.
도 3은 도 1의 호스트 장치의 SD 카드 제어기를 보여주는 블록도이다.
도 4는 호스트 장치에서 운영 체제가 구동되는 예를 보여준다.
도 5는 도 1의 호스트 장치가 SD 카드로부터 파일을 읽는 방법을 보여주는 순서도이다.
도 6은 SD 카드 제어기가 SD 카드에 대해 한 번의 읽기를 수행하는 과정을 보여주는 순서도이다.
도 7은 본 발명의 실시 예에 따른 SD 카드 제어기를 보여주는 블록도이다.
도 8은 본 발명의 실시 예에 따른 SD 카드 제어기를 포함하는 호스트 장치에서 운영 체제가 구동되는 예를 보여준다.
도 9는 도 7의 SD 카드 제어기를 포함하는 호스트 장치의 중앙 처리 장치가 파일 단위의 읽기를 수행하는 과정을 보여주는 순서도이다.
도 10은 SD 카드 제어기가 파일 단위의 읽기 요청에 따라 SD 카드로부터 파일을 읽는 방법을 보여주는 순서도이다.
도 2는 도 1의 SD 카드의 구성을 보여준다.
도 3은 도 1의 호스트 장치의 SD 카드 제어기를 보여주는 블록도이다.
도 4는 호스트 장치에서 운영 체제가 구동되는 예를 보여준다.
도 5는 도 1의 호스트 장치가 SD 카드로부터 파일을 읽는 방법을 보여주는 순서도이다.
도 6은 SD 카드 제어기가 SD 카드에 대해 한 번의 읽기를 수행하는 과정을 보여주는 순서도이다.
도 7은 본 발명의 실시 예에 따른 SD 카드 제어기를 보여주는 블록도이다.
도 8은 본 발명의 실시 예에 따른 SD 카드 제어기를 포함하는 호스트 장치에서 운영 체제가 구동되는 예를 보여준다.
도 9는 도 7의 SD 카드 제어기를 포함하는 호스트 장치의 중앙 처리 장치가 파일 단위의 읽기를 수행하는 과정을 보여주는 순서도이다.
도 10은 SD 카드 제어기가 파일 단위의 읽기 요청에 따라 SD 카드로부터 파일을 읽는 방법을 보여주는 순서도이다.
이하에서, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여, 본 발명의 실시 예를 첨부된 도면을 참조하여 설명하기로 한다.
도 1은 본 발명의 실시 예에 따른 전자 장치(100)를 보여주는 블록도이다. 도 1을 참조하면, 전자 장치(100)는 SD 카드(110) 및 호스트 장치(120)를 포함한다. 호스트 장치(120)는 SD 카드(110)를 메인 저장 장치 또는 확장된 저장 장치로 사용할 수 있다. SD 카드(110)는 호스트 장치(120)에 의해 블록 단위로 액세스될 수 있다. 예를 들어, 블록은 512 바이트일 수 있다. 호스트 장치(120)는 SD 카드(110)에 저장되는 파일들을 클러스터 단위로 관리할 수 있다. 예를 들어, 클러스터는 4096 바이트이며, 8 블록들에 해당할 수 있다.
호스트 장치(120)는 중앙 처리 장치(121, Central Processing Unit), 버퍼 메모리(122), 그리고 SD 카드 제어기(123)를 포함한다.
중앙 처리 장치(121)는 호스트 장치의 제반 동작을 제어하고, SD 카드(110)를 액세스할 수 있다. 중앙 처리 장치(121)는 운영 체제(Operating System) 및 운영 체제상에서 다양한 응용들을 구동할 수 있다. 다른 예로서, 중앙 처리 장치(121)는 펌웨어(Firmware)를 구동할 수 있다. 중앙 처리 장치(121)는 SD 카드(110)에 기입할 데이터 또는 SD 카드(110)로부터 읽히는 데이터를 버퍼 메모리(122)에 임시로 저장할 수 있다.
SD 카드 제어기(123)는 중앙 처리 장치(120)의 요청에 따라 SD 카드(110)에 다양한 커맨드들을 전송하고, SD 카드(110)로부터 다양한 응답들을 수신하고, 그리고 SD 카드(110)와 다양한 데이터를 교환할 수 있다. SD 카드 제어기(123)는 SD 카드(110)를 초기화하고, SD 카드(110)에 데이터를 기입하거나 SD 카드(110)로부터 데이터를 읽을 수 있다. 예를 들어, SD 카드(110) 내에 제공될 수 있는 제어기와 구분하기 위하여, SD 카드 제어기(123)는 SD 카드 호스트 제어기라 불릴 수 있다.
예시적으로, 호스트 장치(120)는 디지털 카메라, 스마트폰, 스마트패드 등과 같은 다양한 휴대용 전자 장치들 중 하나일 수 있다. SD 카드(110)는 호스트 장치(120)와 착탈 가능하도록 결합될 수 있다.
도 2는 도 1의 SD 카드(110)의 구성을 보여준다. 도 1 및 도 2를 참조하면, SD 카드(110)에 파티션들(PT)이 형성될 수 있다. 예시적으로, 두 개의 파티션들(PT)이 형성된 것으로 도시되나, SD 카드(110)의 파티션들의 수는 한정되지 않는다. 예를 들어, SD 카드(110)에 하나의 파티션 또는 둘보다 많은 파티션들이 형성될 수 있다.
각 파티션(PT)은 볼륨 부트 섹터(VBS, Volume, Boot Sector), MFT (Master File Table), 그리고 파일들(FILES)를 포함할 수 있다. 예를 들어, 볼륨 부트 섹터(VBS)는 하나의 블록으로 형성될 수 있다. 볼륨 부트 섹터(VBS)의 '0x30' 번지는 MFT가 저장된 시작 클러스터의 번호를 포함할 수 있다. MFT는 파일들이 저장된 위치들에 대한 정보를 포함할 수 있다. 파일들(FILES)은 호스트 장치(120)에 의해 SD 카드(110)에 기입된 파일들일 수 있다.
MFT는 복수의 MFT 엔트리들(ET)을 포함한다. 각 MFT 엔트리(ET)는 헤더(H), 속성 헤어들(AH, Attribute Header) 및 속성들(AT)을 포함한다. 예시적으로, 각 MFT 엔트리(ET)에 두 개의 속성들(AT)이 각각 속성 헤더들(AH)과 함께 포함되는 것으로 도시되어 있으나, 각 MFT 엔트리(ET) 내의 속성들(AT)의 수는 한정되지 않는다. 예를 들어, MFT 엔트리들(ET)의 속성들(AT)의 개수는 서로 다를 수 있다. 또한, 동일한 MFT 엔트리(ET) 내에서 또는 서로 다른 MFT 엔트리들(ET)에서, 속성들(AT)의 길이는 서로 다를 수 있다.
각 MFT 엔트리(ET)는 하나의 디렉토리 또는 하나의 파일을 가리킬 수 있다. 예를 들어, 각 MFT 엔트리(ET)가 디렉토리를 가리킬 때에, '0x30' 타입의 '$FILE_NAME' 속성은 각 MFT 엔트리(ET)가 디렉토리임을 가리키며, 디렉토리 이름을 포함할 수 있다. '0x90' 타입의 '$INDEX_TOOR' 속성 및 '0xA0' 타입의 '$INDEX_ALLOCATION' 속성은 각 MFT 엔트리(ET)에 속한 하위 MFT 엔트리들(ET), 즉 디렉토리의 하위 디렉토리 또는 파일과 연관된 MFT 엔트리들(ET)의 정보를 포함한다.
각 MFT 엔트리(ET)가 파일일 때에, '0x30' 타입의 '$FILE_NAME' 속성은 각 MFT 엔트리(ET)가 파일임을 가리키며, 파일 이름을 포함할 수 있다. '0x80' 타입의 '$DATA' 속성은 파일의 데이터 또는 파일들(FILES) 중에서 각 MFT 엔트리(ET)과 연관된 파일의 위치 정보를 포함할 수 있다.
예시적으로, 각 MFT 엔트리(ET)는 1024 바이트이며, 2 블록들에 해당할 수 있다.
도 3은 도 1의 호스트 장치(120)의 SD 카드 제어기(123)를 보여주는 블록도이다. 도 1 및 도 3을 참조하면, SD 카드 제어기(123)는 레지스터들(RT), DMAC (Direct Memory Access Controller), 커맨드 처리기(CP), 그리고 데이터 처리기(DP)를 포함한다.
레지스터들(RT)은 중앙 처리 장치(121)로부터의 제어 정보들이 저장되는 제어 레지스터들 및 SD 카드(110) 또는 SD 카드 제어기(123)의 동작 결과에 대한 정보가 저장되는 상태 레지스터들을 포함할 수 있다. 예를 들어, 제어 레지스터들은 중앙 처리 장치(121)에 의해 기입되며 SD 카드 제어기(123)에 의해 읽힐 수 있다. 상태 레지스터들은 SD 카드 제어기(123)에 의해 기입되며 중앙 처리 장치(121)에 의해 읽힐 수 있다. 예를 들어, 레지스터들(RT)는 버스 슬레이브 인터페이스(BSI, Bus Slave Interface)를 통해 중앙 처리 장치(121)와 통신할 수 있다.
DMAC는 SD 카드(110)에 대한 쓰기 동작 시에 버퍼 메모리(122)에 저장된 데이터를 읽고, 읽혀진 데이터를 데이터 처리기(DP)로 전달할 수 있다. DMAC는 SD 카드(110)에 대한 읽기 동작 시에 데이터 처리기(DP)로부터 수신되는 데이터를 버퍼 메모리(122)에 기입할 수 있다. 예를 들어, DMAC는 버스 마스터 인터페이스(BMI)를 통해 버퍼 메모리(122)와 통신할 수 있다.
커맨드 처리기(CP)는 레지스터들(RT)에 저장된 제어 정보에 따라 SD 카드(110)로 커맨드(CMD)를 전송할 수 있다. 또한, 커맨드 처리기(CP)는 SD 카드(110)로부터 전달되는 응답에 따라 레지스터들(RT)에 상태 정보를 저장할 수 있다. 커맨드 처리기(CP)는 SD 카드(110)와의 통신 결과 또는 다양한 상황에서 인터럽트(IRQ)를 발생할 수 있다. 발생된 인터럽트(IRQ)는 중앙 처리 장치(121)로 전달될 수 있다.
데이터 처리기(DP)는 DMAC를 통해 수신되는 데이터(DATA)를 SD 카드(110)로 전달하고, SD 카드(110)로부터 전달되는 데이터(DATA)를 DMAC로 전달할 수 있다.
SD 카드 제어기(123)는 호스트 장치(120)에서 생성되는 클럭 신호(CLK)를 SD 카드(110)로 전달할 수 있다.
예시적으로, 중앙 처리 장치(121)가 운영 체제를 구동하지 않고 펌웨어를 구동하는 경우, 중앙 처리 장치(121)는 SD 카드 제어기(123)로 읽기 요청을 직접 전달할 수 있다. 중앙 처리 장치(121)가 운영 체제를 구동하는 경우, 중앙 처리 장치(121)는 운영 체제의 커널을 통해 SD 카드 제어기(123)로 읽기 요청을 전달할 수 있다.
도 4는 호스트 장치(120)에서 운영 체제가 구동되는 예를 보여준다. 도 1 및 도 4를 참조하면, 중앙 처리 장치(121)에 의해 구동되는 응용(APP)은 운영 체제의 커널(KER)을 통해 SD 카드(110)를 액세스할 수 있다. 커널(KER)은 호스트 장치(120)와 연결된 저장 장치들의 저장 공간들을 관리하는 가상 파일 시스템 계층(VFSL, Virtual File System Layer), 호스트 장치(120)에 연결된 저장 장치들의 저장 공간들을 각각 관리하는 개별 파일 시스템들(FS), 버퍼 캐시(BC), 입력 및 출력 시기를 조정하는 입출력 스케줄러(IOS), 호스트 장치(120)와 연관된 각 저장 장치들을 관리하는 블록 드라이버(BD), 그리고 SD 카드 제어기(123)를 포함한다.
응용(APP)에 의해 발생되는 읽기 요청은 커널(KER)의 계층들을 통해 SD 카드(110)로 전달될 수 있다.
도 5는 도 1의 호스트 장치(120)가 SD 카드(110)로부터 파일을 읽는 방법을 보여주는 순서도이다. 도 1 내지 도 5를 참조하면, S110 단계에서, 호스트 장치(120)는 SD 카드(110)의 볼륨 부트 섹터(VBS)의 '0x30' 번지를 참조하여, MFT의 시작 클러스터의 번호를 읽을 수 있다. 예를 들어, 호스트 장치(120)는 볼륨 부트 섹터(VBS)가 속한 블록을 읽고, 읽혀진 볼륨 부트 섹터(VBS)의 '0x30' 번지를 참조할 수 있다.
S120 단계에서, 호스트 장치(120)는 SD 카드(110)의 MFT의 MFT 엔트리(ET) 또는 MFT 엔트리들(ET)을 읽을 수 있다. 예를 들어, 호스트 장치(120)는 단일 블록 읽기 또는 다중 블록 읽기 커맨드를 SD 카드(110)로 전송하여, SD 카드(110)로부터 MFT 엔트리(ET) 또는 MFT 엔트리들(ET)에 해당하는 단일 블록 또는 다중 블록들을 수신할 수 있다. 예를 들어, 호스트 장치(120)는 각 MFT 엔트리(ET)의 '$INDEX_ROOT' 속성 및 '$INDEX_ALLOCATION' 속성을 참조하여 목표 디렉토리의 MFT 엔트리(ET)를 추적하고, 추적된 MFT 엔트리(ET)에 속한 하위 MFT 엔트리들(ET)의 파일 이름들을 목표 파일의 이름과 비교하여 목표 파일의 MFT 엔트리(ET)를 검출할 수 있다.
S130 단계에서, 목표 파일의 MFT 엔트리가 획득되었는지 판별된다. 한 번의 읽기(예를 들어, 단일 블록 읽기 또는 다중 블록 읽기)를 통해 읽혀진 MFT 엔트리(ET) 또는 MFT 엔트리들(ET)에서 목표 파일의 MFT 엔트리가 획득되지 않으면, S120 단계에서 호스트 장치(120)는 MFT 엔트리(ET) 또는 MFT 엔트리들(ET)을 추가적으로 읽을 수 있다.
목표 파일의 MFT 엔트리(ET)가 획득되었으면, S140 단계에서, 호스트 장치(120)는 획득된 MFT 엔트리(ET)의 '$DATA' 속성을 참조하여, 파일들(FILES) 중에서 목표 파일을 읽을 수 있다.
도 6은 호스트 장치(120)가 SD 카드(110)에 대해 한 번의 읽기를 수행하는 과정의 예를 보여주는 순서도이다. 도 1 내지 도 6을 참조하면, S210 단계에서, 중앙 처리 장치(121)는 SD 카드 제어기(123)로 읽기 요청을 전달할 수 있다. 예를 들어, 중앙 처리 장치(121)는 클러스터 단위 또는 SD 카드(110)의 블록 단위의 데이터를 요청하는 읽기 요청을 SD 카드 제어기(123)로 전달할 수 있다.
S220 단계에서, SD 카드 제어기(123)는 읽기 커맨드(S220)를 SD 카드(110)로 전달할 수 있다. 예를 들어, 읽기 커맨드(S220)는 단일 블록 읽기 커맨드 또는 다중 블록 읽기 커맨드일 수 있다.
S220 단계에서 읽기 커맨드를 전송한 후 S230 단계에서, SD 카드 제어기(123)는 읽기 커맨드를 전송하였음을 알리는 제1 인터럽트를 생성할 수 있다. 제1 인터럽트는 중앙 처리 장치(121)로 전달된다.
S240 단계에서, SD 카드(110)는 읽기 커맨드를 수신하였음을 알리는 응답을 SD 카드 제어기(123)로 전달할 수 있다.
응답이 수신됨에 따라, S250 단계에서, SD 카드 제어기(123)는 응답이 수신되었음을 알리는 제2 인터럽트를 생성할 수 있다. 제2 인터럽트는 중앙 처리 장치(121)로 전달된다.
S260 단계에서, SD 카드(110)는 읽기 커맨드에 의해 요청된 데이터를 SD 카드 제어기(123)로 전달할 수 있다.
S270 단계에서, SD 카드 제어기(123)의 DMAC는 SD 카드(110)로부터 전달되는 데이터를 버퍼 메모리(122)에 저장할 수 있다.
DMAC의 데이터 전송이 완료되면, S280 단계에서, SD 카드 제어기(123)는 데이터의 전송이 완료되었음을 알리는 제3 인터럽트를 생성할 수 있다. 제3 인터럽트는 중앙 처리 장치(121)로 전달된다. 도 6을 참조하여 설명된 바와 같이, SD 카드 제어기(123)가 한 번의 읽기를 수행하는 동안에 3번의 인터럽트들이 발생한다. 도 5를 참조하여 설명된 바와 같이, 호스트 장치(120)가 SD 카드(110)로부터 파일을 읽는 데에 복수회의 읽기들이 요구된다. 즉, 호스트 장치(120)가 SD 카드(110)로부터 파일을 읽는 동안 다수의 인터럽트들이 발생하며, 중앙 처리 장치(121)는 인터럽트들을 처리하는 데에 자원을 할당하여야 한다.
도 7은 본 발명의 실시 예에 따른 SD 카드 제어기(223)를 보여주는 블록도이다. 도 3의 SD 카드 제어기(123)와 비교하면, SD 카드 제어기(223)는 멀티플렉서(MUX) 및 읽기 제어기(RC)를 더 포함한다. 간결한 설명을 위하여, 도 3을 참조하여 설명된 동작들 및 구성 요소들에 대한 설명은 생략된다.
멀티플렉서(MUX)는 제1 모드에서 레지스터들(RT)을 버스 슬레이브 인터페이스(BSI)에 연결하고, 인터럽트(IRQ)를 중앙 처리 장치(121)로 출력할 수 있다. 멀티플렉서(MUX)는 제2 모드에서 레지스터들(RT)을 읽기 제어기(RC)에 연결하고, 인터럽트(IRQ)를 읽기 제어기(RC)로 출력할 수 있다.
제2 모드에서, 읽기 제어기(RC)는 레지스터들(RT)을 참조하여 읽기 요청을 식별하고, 읽기 요청에 따라 커맨드 처리기(CP)에서 커맨드들이 생성되도록 레지스터들(RT)을 설정할 수 있다. 예를 들어, 읽기 제어기(RC)는 레지스터들(RT)을 참조하여 파일 단위의 읽기 요청을 식별할 수 있다. 읽기 제어기(RC)는 파일 단위의 읽기 요청일 식별하고, 블록 또는 클러스터 단위의 읽기 요청을 레지스터들(RT)에 설정할 수 있다. 제2 모드에서, 읽기 제어기(RC)는 커맨드 처리기(CP)로부터 발생되는 인터럽트들(IRQ)을 처리할 수 있다.
예시적으로, 제1 모드는 중앙 처리 장치(121)가 SD 카드 제어기(223)에 파일 단위의 읽기 요청을 전달하기 이전 또는 읽기가 완료된 이후일 수 있다. 중앙 처리 장치(121)가 레지스터들(RT)에 파일 단위의 읽기 요청을 저장하면, SD 카드 제어기(223)는 제2 모드로 진입할 수 있다. 제2 모드에서, 읽기 제어기(RC)는 커맨드 처리기(CP)에 의해 발생되는 인터럽트들(IRQ)을 처리하며 읽기를 제어할 수 있다. DMAC가 버퍼 메모리(122)에 데이터의 저장을 완료하면, 읽기 제어기(RC)는 파일 단위의 읽기가 완료되었음을 알리는 인터럽트(IRQ)를 중앙 처리 장치(121)로 전달하고, SD 카드 제어기(223)는 제1 모드로 복귀할 수 있다.
예시적으로, SD 카드 제어기(223)는 도 1의 호스트 장치(120)에서 SD 카드 제어기(123)를 대체하여 호스트 장치(120)에 포함될 수 있다. SD 카드 제어기(223)는 호스트 장치(120)의 중앙 처리 장치(121) 및 버퍼 메모리(122), 그리고 SD 카드(110)와 상호 동작하도록 구성될 수 있다.
도 7을 참조하여 설명된 바와 같이, SD 카드 제어기(223)가 파일 단위의 읽기 요청을 수신하고, 파일 단위의 읽기 요청을 처리하는 동안에 발생하는 인터럽트(IRQ)들을 자체적으로 처리하도록 구성될 수 있다. 도 7의 SD 카드 제어기(223)에 따르면, 중앙 처리 장치(121)로 전달되는 인터럽트들(IRQ)의 수가 감소하고, 중앙 처리 장치(121)의 자원이 SD 카드(110)의 읽기로 인해 소비되는 양이 감소된다.
도 8은 본 발명의 실시 예에 따른 SD 카드 제어기(223)를 포함하는 호스트 장치(120)에서 운영 체제가 구동되는 예를 보여준다. 도 4와 비교하면, 응용(APP)과 SD 카드 제어기(123) 사이에 통신 경로(CP)가 형성될 수 있다. 응용(APP)은 SD 카드 제어기(123)와 직접 연결된 통신 경로(CP)를 통해 SD 카드 제어기(123)로 파일 읽기 요청을 전달할 수 있다. 또한, 응용(APP)은 통신 경로(CP)를 통해 SD 카드(110)로부터 읽힌 데이터를 수신할 수 있다. 예를 들어, SD 카드 제어기(223)는 읽혀진 데이터를 버퍼 메모리(122)에 저장하고, 버퍼 메모리(122)에 데이터의 저장이 완료되었음을 응용(APP)에 알릴 수 있다. 다른 예로서, SD 카드 제어기(223)는 읽혀진 데이터를 버퍼 메모리(122)에 저장하고, 버퍼 메모리(122)에 데이터의 저장이 완료되었음을 버퍼 메모리(122)의 주소와 함께 응용(APP)에 알릴 수 있다.
도 7을 참조하여 설명된 바와 같이 SD 카드 제어기(223)가 파일 단위의 읽기 요청을 처리하도록 구성되고, 그리고 도 8을 참조하여 설명된 바와 같이 응용(APP)과 SD 카드 제어기(223) 사이에 통신 경로(CP)가 제공되면, 응용(APP)에서 발생되는 읽기 요청이 커널(KER)의 일부만을 통하여 처리될 수 있다. 따라서, 응용(APP)을 읽기 요청을 처리하는 데에 소비되는 중앙 처리 장치(121)의 자원의 양이 감소된다.
도 9는 도 7의 SD 카드 제어기(223)를 포함하는 호스트 장치(120)의 중앙 처리 장치(121)가 파일 단위의 읽기를 수행하는 과정을 보여주는 순서도이다. 도 1, 도 7 및 도 9를 참조하면, S310 단계에서, 중앙 처리 장치(121)는 읽힌 파일이 저장될 공간을 버퍼 메모리(122)에 할당할 수 있다. 예를 들어, 중앙 처리 장치(121)는 할당된 공간들이 링크드 리스트(linked list) 형태로 구성된 버퍼 리스트를 생성할 수 있다. 중앙 처리 장치(121)는 생성된 버퍼 리스트를 SD 카드 제어기(223)로 전달할 수 있다. 예를 들어, 중앙 처리 장치(121)는 버퍼 리스트를 SD 카드 제어기(223)의 레지스터들(RT)에 기입하거나 또는 버퍼 리스트의 하나의 저장 공간의 주소를 제어기(223)의 레지스터들(RT)에 기입할 수 있다.
S320 단계에서, 중앙 처리 장치(121)는 목표 파일의 이름 및 목표 파일의 경로를 SD 카드 제어기(223)의 레지스터들(RT)에 기입할 수 있다. 예를 들어, 중앙 처리 장치(121)는 목표 파일 중에서 읽을 목표 부분에 대한 정보를 레지스터들(RT)에 더 기입할 수 있다.
S330 단계에서, 중앙 처리 장치(121)는 SD 카드 제어기(223)에 읽기 요청을 전송할 수 있다.
이후에, 읽기가 완료되었음을 알리는 인터럽트가 발생할 때까지, 중앙 처리 장치(121)는 읽기 요청과 연관된 프로세스를 중지할 수 있다. 읽기가 완료되었음을 알리는 인터럽트가 발생하면, 중앙 처리 장치(121)는 읽기 요청과 연관된 프로세스를 재개하고, 해당 프로세스를 계속 수행할 수 있다.
도 10은 SD 카드 제어기(223)가 파일 단위의 읽기 요청에 따라 SD 카드(110)로부터 파일을 읽는 방법을 보여주는 순서도이다. 도 1, 도 7 및 도 10을 참조하면, S410 단계에서 SD 카드 제어기(223)는 프로세서(121)로부터 파일 읽기 요청을 수신할 수 있다. 예를 들어, SD 카드 제어기(223)는 제1 모드에서 읽기 요청을 수신할 수 있다. 읽기 요청이 수신됨에 따라, SD 카드 제어기(223)는 제2 모드로 진입할 수 있다. 예를 들어, SD 카드 제어기(223)는 레지스터들(223)에 저장된 읽기 요청, 파일 이름 및 파일 경로를 식별할 수 있다.
S420 단계에서, SD 카드 제어기(223)는 SD 카드(110)에 읽기 커맨드를 전송할 수 있다. 예를 들어, 읽기 제어기(RC)는 파일 단위의 읽기 요청에 기반하여 클러스터 또는 블록 단위의 읽기 요청을 레지스터들(RT)에 기입할 수 있다. 커맨드 처리기(CP)는 클러스터 또는 파일 단위의 읽기 요청에 따라 읽기 커맨드를 생성할 수 있다. 읽기 제어기(RC)는 읽기 커맨드를 전송함에 따라 발생하는 인터럽트(IRQ)를 처리할 수 있다.
S430 단계에서, SD 카드 제어기(223)는 SD 카드(110)로부터 응답을 수신할 수 있다. 읽기 제어기(RC)는 응답을 수신함에 따라 발생하는 인터럽트(IRQ)를 처리할 수 있다.
S440 단계에서, SD 카드 제어기(223)는 SD 카드(110)로부터 데이터를 수신할 수 있다. DMAC는 수신된 데이터를 버퍼 메모리(122)에 저장할 수 있다. 읽기 제어기(RC)는 DMAC의 데이터 전송이 완료됨에 따라 발생하는 인터럽트(IRQ)를 처리할 수 있다.
S420 단계 내지 S450 단계는 한 번의 읽기를 형성할 수 있다. SD 카드 제어기(223)는 파일 읽기 요청에 의해 요청된 목표 파일이 버퍼 메모리(122)에 로드될 때까지, 읽기를 반복적으로 수행할 수 있다.
목표 파일이 버퍼 메모리(122)에 로드되면, 읽기 제어기(EC)는 인터럽트를 중앙 처리 장치(121)로 전송할 수 있다. 이후에, SD 카드 제어기(223)는 제1 모드로 복귀할 수 있다.
예를 들어, 첫 번째 읽기 시에, 읽기 제어기(RC)는 SD 카드의 마스터 부트 레코드를 읽어 파티션의 시작 블록을 식별할 수 있다. 두 번째 읽기 시에, 읽기 제어기(RC)는 볼륨 부트 섹터(VBS, 도 2 참조)의 '0x30' 번지를 읽어 MFT의 시작 클러스터를 식별할 수 있다. 다른 예로서, 읽기 제어기(RC)는 호스트 장치(120)가 SD 카드(110)를 초기화하고 마운트하는 동안, 호스트 장치(120)가 파티션의 시작 블록을 읽는 것을 감청하고, 필요한 정보를 저장할 수 있다. 또한, 읽기 제어기(RC)는 호스트 장치(120)가 MFT의 시작 클러스터를 액세스하는 것을 감청하고, 필요한 정보를 저장할 수 있다. 이 경우, 첫 번째 읽기와 두 번째 읽기는 읽기 요청 시에 생략될 수 있다.
세 번째 읽기에서부터, 읽기 제어기(RC)는 MFT의 엔트리들을 순차적으로 읽고, 목표 파일의 이름 및 위치와 비교할 수 있다. 예를 들어, 읽기 제어기(RC)는 MFT 엔트리들을 읽고, 목표 파일의 위치의 디렉토리에 해당하는 MFT 엔트리를 검출할 수 있다. 읽기 제어기(RC)는 검출된 MFT 엔트리의 하위의 MFT 엔트리들에서 목표 파일의 이름에 해당하는 MFT 엔트리를 획득할 수 있다.
목표 파일에 대응하는 MFT 엔트리가 획득되면, 읽기 제어기(RC)는 획득된 MFT 엔트리의 '$DATA' 속성을 참조하여 목표 파일이 저장된 클러스터들의 위치들을 획득할 수 있다. 읽기 제어기(RC)는 목표 파일이 저장된 클러스터들에 대한 읽기들을 발생할 수 있다. DMAC는 SD 카드(110)로부터 전달되는 데이터를 버퍼 메모리(122)에 저장할 수 있다.
상술된 바와 같이, SD 카드 제어기(223)는 파일 읽기 요청에 응답하여 복수의 읽기들을 수행할 수 있다. SD 카드 제어기(223)가 하나의 파일을 SD 카드(110)로부터 읽을 때에, SD 카드 제어기(223)는 하나의 인터럽트(IRQ)만을 생성한다. 따라서, 읽기 시에 중앙 처리 장치(121)에서 소비되는 자원의 양이 감소된다.
본 발명의 상세한 설명에서는 구체적인 실시 예에 관하여 설명하였으나, 본 발명의 범위와 기술적 사상에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능하다. 그러므로 본 발명의 범위는 상술한 실시 예에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 한다.
100; 전자 장치
110; SD 카드
120; 호스트 장치
121; 중앙 처리 장치
122; 버퍼 메모리
123, 223; SD 카드 제어기
CP; 커맨드 처리기
DP; 데이터 처리기
RT; 레지스터들
DMAC; 다이렉트 메모리 액세스 제어기
RC; 읽기 제어기
MUX; 멀티플렉서
110; SD 카드
120; 호스트 장치
121; 중앙 처리 장치
122; 버퍼 메모리
123, 223; SD 카드 제어기
CP; 커맨드 처리기
DP; 데이터 처리기
RT; 레지스터들
DMAC; 다이렉트 메모리 액세스 제어기
RC; 읽기 제어기
MUX; 멀티플렉서
Claims (1)
- 메모리 카드로부터 파일을 읽는 방법에 있어서:
메모리 카드 호스트 제어기에 읽기 대상인 파일의 이름 및 버퍼 정보를 전달하는 단계;
상기 메모리 카드 호스트 제어기가 상기 메모리 카드의 파일 시스템을 읽어 상기 읽기 대상인 파일의 위치를 획득하는 단계;
상기 메모리 카드 호스트 제어기가 상기 획득된 위치를 이용하여 상기 메모리 카드로부터 상기 읽기 대상인 파일을 읽는 단계;
상기 메모리 카드 호스트 제어기가 상기 읽혀진 파일을 상기 버퍼 정보에 따라 버퍼 메모리에 저장하는 단계; 그리고
상기 메모리 카드 호스트 제어기가 상기 읽기 대상인 파일의 읽기가 완료되었음을 알리는 인터럽트를 상기 중앙 처리 장치로 전달하는 단계를 포함하고,
상기 메모리 카드 호스트 제어기는 상기 파일 시스템을 읽어 상기 읽기 대상인 파일의 위치를 획득하는 단계 및 상기 메모리 카드로부터 상기 읽기 대상인 파일을 읽는 단계에서 발생하는 인터럽트들을 상기 중앙 처리 장치로 전달하지 않고 자체적으로 처리하도록 구성되는 방법.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020160032279A KR102448590B1 (ko) | 2016-03-17 | 2016-03-17 | 메모리 카드로부터 파일을 읽는 방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020160032279A KR102448590B1 (ko) | 2016-03-17 | 2016-03-17 | 메모리 카드로부터 파일을 읽는 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20170108421A true KR20170108421A (ko) | 2017-09-27 |
KR102448590B1 KR102448590B1 (ko) | 2022-09-29 |
Family
ID=60036002
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020160032279A KR102448590B1 (ko) | 2016-03-17 | 2016-03-17 | 메모리 카드로부터 파일을 읽는 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102448590B1 (ko) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100758301B1 (ko) * | 2006-08-04 | 2007-09-12 | 삼성전자주식회사 | 메모리 카드 및 그것의 데이터 저장 방법 |
KR20080084082A (ko) * | 2007-03-14 | 2008-09-19 | 삼성전자주식회사 | 메모리 카드 및 그것을 포함하는 메모리 시스템 그리고그것의 동작 방법 |
KR100975178B1 (ko) * | 2002-04-15 | 2010-08-10 | 소니 주식회사 | 데이터 기억 장치 |
-
2016
- 2016-03-17 KR KR1020160032279A patent/KR102448590B1/ko active IP Right Grant
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100975178B1 (ko) * | 2002-04-15 | 2010-08-10 | 소니 주식회사 | 데이터 기억 장치 |
KR100758301B1 (ko) * | 2006-08-04 | 2007-09-12 | 삼성전자주식회사 | 메모리 카드 및 그것의 데이터 저장 방법 |
KR20080084082A (ko) * | 2007-03-14 | 2008-09-19 | 삼성전자주식회사 | 메모리 카드 및 그것을 포함하는 메모리 시스템 그리고그것의 동작 방법 |
Also Published As
Publication number | Publication date |
---|---|
KR102448590B1 (ko) | 2022-09-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113377283B (zh) | 具有分区命名空间的存储器***及其操作方法 | |
US9329793B2 (en) | Storage system with load balancing mechanism and method of operation thereof | |
US20190065266A1 (en) | Apparatus and method of managing shared resources in achieving io virtualization in a storage device | |
US10795599B2 (en) | Data migration method, host and solid state disk | |
EP2557494A1 (en) | Storage apparatus and data copy method between thin-provisioning virtual volumes | |
KR102365312B1 (ko) | 스토리지 컨트롤러, 연산 스토리지 장치, 및 연산 스토리지 장치의 동작 방법 | |
US10956326B2 (en) | Storage system with data management and protection mechanism and method of operation thereof | |
CN112835817A (zh) | 数据迁移的方法及*** | |
CN110970078A (zh) | 用于快速引导读取的方法 | |
US11068283B2 (en) | Semiconductor apparatus, operation method thereof, and stacked memory apparatus having the same | |
KR20200101982A (ko) | NVMe 기반의 데이터 판독 방법, 장치, 및 시스템 | |
EP4283472A1 (en) | Method for caching data, a host device for caching data, and a storage system for caching data | |
US9245613B2 (en) | Storage interface apparatus for solid state drive tester | |
US9146693B2 (en) | Storage control device, storage system, and storage control method | |
US20060277326A1 (en) | Data transfer system and method | |
KR102448590B1 (ko) | 메모리 카드로부터 파일을 읽는 방법 | |
US11327885B2 (en) | Controller managing namespace and memory system having the controller | |
US20120311236A1 (en) | Memory system, data control method, and data controller | |
CN111045961B (zh) | 数据处理方法及使用所述方法的存储控制器 | |
US9058113B2 (en) | Storage region providing device, storage region providing method, and recording medium | |
US20240184712A1 (en) | Memory system with improved map table update efficiency, memory controller therefor, and operating method thereof | |
US20150253996A1 (en) | Access control method and data storage device | |
CN117435535A (zh) | 一种存储***、主控芯片、数据存储方法及数据读取方法 | |
CN115421904A (zh) | 管理内存的方法及装置、电子设备及可读存储介质 | |
CN118295943A (zh) | 读响应保序方法、***、存储介质及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E701 | Decision to grant or registration of patent right |