KR20100106610A - 직접적인 사용자 액세스를 갖는 저장 장치 - Google Patents
직접적인 사용자 액세스를 갖는 저장 장치 Download PDFInfo
- Publication number
- KR20100106610A KR20100106610A KR1020107019377A KR20107019377A KR20100106610A KR 20100106610 A KR20100106610 A KR 20100106610A KR 1020107019377 A KR1020107019377 A KR 1020107019377A KR 20107019377 A KR20107019377 A KR 20107019377A KR 20100106610 A KR20100106610 A KR 20100106610A
- Authority
- KR
- South Korea
- Prior art keywords
- lsd
- data
- digital content
- storage
- hdfs
- Prior art date
Links
- 238000003860 storage Methods 0.000 title claims abstract description 566
- 238000004891 communication Methods 0.000 claims abstract description 155
- 238000000034 method Methods 0.000 claims abstract description 152
- 230000015654 memory Effects 0.000 claims description 198
- 230000008569 process Effects 0.000 claims description 93
- 238000012546 transfer Methods 0.000 claims description 28
- 230000003993 interaction Effects 0.000 claims description 19
- 230000000977 initiatory effect Effects 0.000 claims description 10
- 238000013500 data storage Methods 0.000 abstract description 29
- 238000007726 management method Methods 0.000 description 114
- 238000013507 mapping Methods 0.000 description 34
- 230000000875 corresponding effect Effects 0.000 description 30
- 230000006870 function Effects 0.000 description 27
- 230000004044 response Effects 0.000 description 26
- 238000012545 processing Methods 0.000 description 20
- 230000008901 benefit Effects 0.000 description 16
- 230000008859 change Effects 0.000 description 16
- 238000013459 approach Methods 0.000 description 15
- 230000007246 mechanism Effects 0.000 description 14
- 238000012384 transportation and delivery Methods 0.000 description 14
- 238000010586 diagram Methods 0.000 description 13
- 238000001514 detection method Methods 0.000 description 12
- 238000005516 engineering process Methods 0.000 description 11
- 230000009471 action Effects 0.000 description 8
- 238000012512 characterization method Methods 0.000 description 8
- 238000003491 array Methods 0.000 description 6
- 230000001965 increasing effect Effects 0.000 description 6
- 238000012216 screening Methods 0.000 description 6
- 238000004590 computer program Methods 0.000 description 5
- 230000009977 dual effect Effects 0.000 description 5
- 230000006872 improvement Effects 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 238000005457 optimization Methods 0.000 description 5
- 238000009826 distribution Methods 0.000 description 4
- 230000010354 integration Effects 0.000 description 4
- 238000004519 manufacturing process Methods 0.000 description 4
- 230000001419 dependent effect Effects 0.000 description 3
- 238000003780 insertion Methods 0.000 description 3
- 230000037431 insertion Effects 0.000 description 3
- 238000012544 monitoring process Methods 0.000 description 3
- 230000002085 persistent effect Effects 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 230000002452 interceptive effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000011176 pooling Methods 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 230000008685 targeting Effects 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 238000011144 upstream manufacturing Methods 0.000 description 2
- 241000197200 Gallinago media Species 0.000 description 1
- 108091006625 SLC10A6 Proteins 0.000 description 1
- 241000593989 Scardinius erythrophthalmus Species 0.000 description 1
- 102100021993 Sterol O-acyltransferase 1 Human genes 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000003466 anti-cipated effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001010 compromised effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 238000013075 data extraction Methods 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000001404 mediated effect Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000004043 responsiveness Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000005476 soldering Methods 0.000 description 1
- 230000000153 supplemental effect Effects 0.000 description 1
- 230000026676 system process Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 238000012559 user support system Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/20—Employing a main memory using a specific memory technology
- G06F2212/202—Non-volatile memory
- G06F2212/2022—Flash memory
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
여러 방법, 장치 및 시스템은 분산된 저장 서비스를 제공하기 위해 기술된다. 데이터 저장 장치는 데이터 저장 장치에 직접 결합된 로컬 호스트 컴퓨터(및 그 반대도 가능), 원격 서버 컴퓨터 같은 외부 엔티티로, 또는 로컬 호스트 컴퓨터에 의한 개입으로 또는 개입 없이 원격 데이터 저장 장치들로 직접 통신 세션을 개시할 수 있다.
Description
본 발명은, 일반적으로 디지털 장치에 관한 것이다. 보다 구체적으로, 본 발명은 디지털 장치를 위한 크로스 플랫폼 대량 저장 서비스(cross platform mass storage service)를 제공하는 것에 관한 것이다. 본 발명은 또한 캐시 관리(cache management)에 관한 것이고, 디지털 콘텐트의 안전한 분배와 소비를 제공하고 로컬 저장 장치를 갖는 가상 저장을 제공하는 것에 관한 것이다. 또한, 본 발명은 로컬 저장 장치가 동작 가능하게 결합된 호스트 장치를 포함하지 않으면서 로컬 저장 장치에서 데이터를 인덱스하기 위한 능력을 포함하는 로컬 저장 장치에 관한 것이다.
종래 기술에서, '오토런(autorun)' 또는 '오토플레이(autoplay)' 기능은 분리 가능 매체(예를 들어, CD-ROM 또는 플래시 미디어)의 삽입과 함께 몇몇 작용(action)을 자동으로 수행하기 위한 능력을 갖는 컴퓨터 OS를 제공한다. 이것은 디스크가 삽입될 때 분리 가능한 매체 상에 분포된 소프트웨어가 인스톨러(installer)를 자동으로 시작하기 때문에 편리한 특징이다. 그러나, 바람직하지 않게, '오토런' 특징은 보안 위험성(즉, 부당한 소프트웨어가 분배될 수 있음)을 제기하는 것으로 몇몇 제작자에 의해 고려된다. 이런 위험성을 회피하기 위하여, 오토런(또는 오토플레이) 특징은 종종 로컬 저장 장치가 직접 사용자와 상호작용하는 메커니즘을 제공하지 않는다면 비활성화된다.
인터넷 기술은 특히 네트워크 최적화 영역에서 특히 최종-사용자 브라우징 경험을 개선하기 위하여 빠르게 개발되는 분야이고, 분야였고 여전히 개발이 유지된다. 컴퓨터 네트워크에서, 프록시 서버는 클라이언트의 요청을 다른 서버, 통상적으로 웹 서버에게 포워딩함으로써 클라이언트의 요청(예를 들어, 웹 페이지에 대한 요청, 접속 설정 등)을 서비스하는 서버(컴퓨터 시스템 또는 애플리케이션 프로그램)이다.
인터넷 애플리케이션(예를 들어, FTP 프로토콜을 사용하는 FTP 클라이언트 또는 WEB 브라우저 같은 임의의 다른 인터넷 애플리케이션)은 일반적으로 적어도 두 개의 관련 인터페이스들, 인터넷 애플리케이션이 호스트 장치 파일 시스템(HDFS)을 사용하여 캐시 관리자에 의해 캐시에 저장된 콘텐트를 관리하는 대량 저장 인터페이스라 지칭되는 로컬 대량 저장 장치에 대한 제 1 인터페이스를 관리한다. 그러나, 보다 일반적으로, 임의의 수의 인터넷 애플리케이션은 각각 이들 개별 저장 영역 각각이 자신의 룰(rule) 세트에 의해 관리되는 그들 각각의 로컬 인터페이스를 통하여 로컬 대량 저장 장치에 저장된 그들 자신의 콘텐트를 각각 관리할 수 있다. 대표적인 인터넷 애플리케이션이 브라우저 애플리케이션 형태를 갖는 경우, 브라우저 캐시 관리자는 적합한 콘텐트를 갖는 브라우저를 서비스하기 위하여 또한 브라우저 캐시 정책으로 불리는 한 세트의 룰을 사용한다. 응답 시간을 개선하고 네트워크 대역폭을 보전하기 위하여, 브라우저 캐시는 통상적으로 캐시 정책에 의해 나타난 관련 룰(들) 세트를 기초로 콘텐트를 저장할 것이다. 예를 들어, 브라우저 캐시 관리자(특정 브라우저에 대해 설정된 관련 캐시 정책을 따름)는 브라우저가 근 미래에 다시 특정 WEB 페이지를 요청할 수 있다는 예상에서 미리 검색된 WEB 페이지를 기초로 콘텐트(예를 들어, WEB 페이지 형태)를 저장할 수 있다. 이런 방식으로, 귀중한 네트워크 자원 대신, 브라우저 캐시 관리자는 브라우저 캐시에 로컬 저장된 관련 WEB 페이지를 검색할 수 있다.
인터넷 애플리케이션에 의해 사용된 다른 인터페이스는 로컬 자원이나 원격 자원일 수 있는 네트워크 자원과 통신시 네트워크 접속을 통해 운반되는 HTTP 명령(command)의 관리 같은 인터넷 접속 능력을 위하여 사용될 수 있다. 모바일 브라우징의 경우 브라우저는 일반적으로 귀중한 모바일 링크 자원들을 보전하기 위하여 콘텐트 최적화/적응/필터링/압축 및 기타 등등을 수행할 수 있는 프록시 서버를 통하여 원격 자원/서버에 액세스한다. 프록시 서버들은 또한 인터넷의 에지상 액세스 제어 같은 부가적인 임무를 요구하는 엔터프라이즈 시스템들에 사용될 수 있다. 다른 가치는 "인터넷의 에지 상"(즉, 사용자의 브라우저에 보다 밀접함) 콘텐트를 사전-캐시(pre-cache)하기 위하여 "콘텐트 사전-페치(pre-fetching) 기술"에 적용할 수 있는 프록시 캐시의 관리에 있다. 이런 방식으로, 브라우징 경험은 요청된 콘텐트가 필요할 때 가까이 있기 때문에 가속될 수 있다.
그러나, 브라우저 캐시 및 프록시 캐시가 서로 독립적으로 관리되기 때문에, 각각 다른 캐시 정책들로부터 또는 상기 정책들에 관한 "학습"이 거의 또는 전혀 없을 수 있다. 그러므로, 브라우저 애플리케이션 및 프록시가 다른 밴더들(vendor)에 의해 공급될 수 있기 때문에 다른 이에게 공지되거나 공지될 수 없는 자신의 룰들의 세트에 의해 프록시 캐시 및 브라우저 캐시가 가이드됨으로써 전체적인 캐시 관리 정책이 없을 수 있다. 이런 전체적인 캐시 관리 정책의 결핍은 부분적으로 저장 자원들의 불충분한 할당으로 인해 결코 최적 브라우징을 경험할 수 없게 하는 비효율성들을 생성할 수 있다. 이런 비효율성들은 예를 들어, 프록시 캐시 및 브라우저 캐시 양쪽에 저장된 콘텐트를 복제하는 것을 포함하여, 네트워크 및 저장 자원들의 비효율적인 사용을 유발한다(즉, 네트워크 링크를 통해 브라우저 콘텐트를 전송함).
제안된 해결책은 브라우저 및 프록시 캐시 사이를 동기화하기 위하여 모바일 핸드셋 상에 클라이언트 에이전트를 통합하는 것을 포함한다. 그러나, 클라이언트 에이전트가 통상적으로 애플리케이션이기 때문에, 그의 특정 용도는 특정 플랫폼들로 제한된다. 특히 모바일 플랫폼들에서 부분적으로 호스트 운영 시스템들의 이질성으로 인해, 클라이언트 에이전트의 유용성은 매우 제한될 수 있다. 이런 이질성은 윈도우즈, 심비안 등과 같은 "개방" 운영 시스템들과 반대로 "폐쇄된" 운영 시스템들(Nucleus)의 경우 더 나빠질 수 있다. 다른 모바일 핸드세트들이 다른 운영 시스템들 상에서 작동할 수 있기 때문에, 이런 구현은 통상적으로 복잡한 소프트웨어 통합을 요구한다. 이런 소프트웨어 통합은 비-개방 운영 시스템에서 작동하는 모바일 핸드세트들을 사용할 때 보다 복잡해진다는 것이 증명되었다.
디지털 콘텐트를 구별하기 위한 적어도 두 개의 상이한 접근법들이 있다: 콘텐트 다운로드 및 콘텐트 스트리밍. 일반적으로 용어 콘텐트 다운로드는 제 1 장치에 저장된 디지털 콘텐트를 전달된 디지털 콘텐트가 저장될 제 2 장치에 전달하는 것으로 생각될 수 있다. 콘텐트 다운로딩은 제 1 장치로부터 제 2 장치로 디지털 콘텐트를 전달하기 위한 "푸시(push)" 및 "풀(pull)" 접근법 모두를 포함할 수 있다. 예를 들어, 제 1 장치에 저장된 디지털 콘텐트는 제 1 장치가 디지털 콘텐트의 전달을 개시한다는 점에서 제 1 장치에 의해 제 2 장치로 "푸시"될 수 있다. 대안적으로, 제 1 장치에 저장된 디지털 콘텐트는 제 2 장치가 제 1 장치로부터 제 2 장치로 디지털 콘텐트의 전달을 개시한다는 점에서 제 1 장치로부터 제 2 장치로 풀링(pull)될 수 있다. 푸시 또는 풀은 정규적 다운로드(HTTP-기반 등) 또는 진행형 다운로드 기술들(즉, 콘텐트를 다운로딩하는 동안 플레이 시작)을 통하여 달성될 수 있다. 어느 경우, 일단 디지털 콘텐트가 제 2 장치에 수신되면, 디지털 콘텐트는 제 2 장치에 로컬적으로 영구적으로 저장된다. 이런 방식에서, 제 2 장치에 저장된 디지털 콘텐트는 하나의 디지털 장치로부터 다른 장치로 이동될 수 있고(전체적으로 사용자 제어 하에) 그리고 사용자 프라이버시는 보전되고(예를 들어, 성인 콘텐트의 경우) 그리고 기타 등등이 수행된다.
그러나, 하나의 단점은 콘텐트 제공자들(예를 들어, 헐리우드 스튜디오들 등)이 '콘텐트 카피'에 대한 해적 시도들에 대해 높은 보안 레벨을 요청하여 콘텐트 휴대성을 제한한다는 사실이다. 이것은 통상적으로 DRM(Digital Rights Management) 기술들이 콘텐트 사용/카피를 제한하는데 목적을 둔 RO(Rights Objects)의 정의에 끼어드는 경우이다. DRM RO들은 통상적으로 캘리포니아주 밀리타스의 샌디스크 코포레이션에 의해 제조된 TrustedFlashTM 메모리 장치 같은 전용 하드웨어 솔루션에 링크된다. 이러한 하드웨어 솔루션들은 사용자가 진정한 콘텐트 및 RO 휴대성을 제공하기 위한 시도시 분리 가능한 매체(예를 들어, SD 저장 장치) 상에 RO들을 안전하게 저장하게 한다. 그러나, 실제로 휴대성은 RO들이 DRM-스킴(scheme)에 종속하기 때문에 달성되지 못하고 전체적으로 채택된 DRM 표준의 부재로 인해, 전체 휴대성은 대응하는 DRM 기술을 지원하는 디지털 미디어 플레이어들(또는 호스트 플랫폼들)로만 제한된다.
콘텐트 스트리밍은 작은 수의 산업 표준화된 프로토콜들(예를 들어, RSTP/RTP 등)을 통하여 구현될 수 있다. 그러나, 콘텐트는 그/그녀가 스트리밍 서버에 네트워크 접속을 얻은 경우만 사용자가 콘텐트에 액세스할 수 있기 때문에 영구적으로 로컬적으로 저장될 수 없다. 이런 접근법의 하나의 이점들은 넓은 콘텐트 액세스가 지원된 스트리밍 프로토콜(즉, 대부분의 레거시 플레이어들은 표준 RTSP/RTP를 사용함)과 호환 가능한 플레이어들에 보장된다는 사실이다. 콘텐트 플레이어들이 보다 가벼운 보안 요구 조건들을 가지기 때문에, 스트리밍 인터페이스를 통하여 진행하는 콘텐트를 '스니핑(sniffing) 및 레코딩'하는 것과 다른 콘텐트 카핑 위험성은 거의 없거나 없다. 이것은 특히 제한된 환경들 및 개방-폐쇄 운영 시스템들이 잠재적 해적들에 대해 상당한 방해물들을 구성하는 모바일 장치에서 진실이고, 상기 잠재적 해적은 보호되지 않은 스트림들을 레코딩하는 것이 폭넓게 이용 가능한 툴들을 통하여 매우 쉽게 수행될 수 있는 개인 컴퓨터들에 대한 경우가 아니다.
이런 위험들은 스트리밍 클라이언트 및 서버(모바일 시스템들에서 필요한 것으로 인식되거나 인식되지 않을 수 있음) 사이의 상호 인증을 통하여 보안 통신 채널의 생성 같은 표준 서비스-레벨 보호에 의해 부분적으로 제거될 수 있다. 그러나, 이런 접근법의 하나의 단점들은 단지 접속된 장치들만이 콘텐트에 액세스할 수 있기 때문에(접속의 부재시 스트리밍 서버에 대한 액세스가 없음) 완전한 휴대성(사용자가 구입한 콘텐트를 제어하는 경우)이 구현될 수 없다는 사실이다. 게다가, 이런 휴대성의 결핍은 이용 가능한 비지니스 모델들을 제한한다. 게다가, 프라이버시는 서비스 제공자가 사용자 선호도들 및 용도를 알기 때문에 타협될 수 있다.
이런 개념은 정적으로 미리-결정된 물리적 메모리 어레이에 세워지고, 상기 메모리 어레이의 일부는 호스트 파일 시스템 및 따라서 사용자로부터 숨겨지고 사용자 요청시에만 활성화될 수 있다. 이런 사용자 요청은 장치 제어기에 의해 원격으로 개시될 수 있고 지불을 포함할 수 있다. 그러나, 이런 접근법은 복수의 단점들을 가지며, 특히 제조된 메모리 어레이의 크기가 미리-결정된 숨겨진 용량을 넘어 메모리 어레이의 저장 용량을 사용자가 추가로 확장할 수 없게 하는 생산 시간에 결정되고, 즉 사용량 융통성이 등이 없고, 숨겨진 메모리와 노출된 메모리 사이의 비율이 생산 시간에, 또는 임의의 경우 로컬 저장 장치가 사용자에게 도달하기 전에 결정되는 것을 포함한다. 예를 들어, 장치 밴더는 각각 2 GB의 총 저장 용량을 갖는 복수의 메모리 장치를 제조할 수 있다. 그러나, 메모리 장치들은 1 GB 메모리 장치들로서 팔리고 나머지 1 GB는 숨겨지거나, 적어도 사용자가 액세스할 수 없다. 비록 제 2 GB가 사용자에 의한 지불 후 액세스 가능하지만, 메모리 장치의 제조자는 위험을 부담한다; 즉, 사용자가 우선 제조자에게 지불 없이 제 2 숨겨진 GB에 액세스할 수 없을 것이다.
이러한 물리적으로 확장 가능한 저장 장치들의 제한들을 극복하기 위한 하나의 방식은 로컬(즉, 레거시 대량 저장 명령들을 통하여 에이전트에 의해 액세스됨)인지 원격(즉, 네트워크 프로토콜들을 통하여 에이전트에 의해 액세스됨)인지 저장 요약을 제공하는 호스트에 통합된 독점 클라이언트 에이전트를 통해서이다. 이런 특정 접근법은 Personalite Numerique에 의해 제조되고 프랑스 특허 FR0412199에 기술된 바와 같은 여러 생산물들로 구현되었다. 그러나, 클라이언트 에이전트가 통상적으로 특정 애플리케이션이기 때문에, 그의 사용은 특정 플랫폼들로 제한된다. 특히 모바일 플랫폼들에서 부분적으로 호스트 운영 시스템들의 이질성으로 인해, 클라이언트 에이전트의 유용성은 매우 제한될 수 있다. 또한, 다른 모바일 핸드세트들은 여러 상이한 운영 시스템들에서 작동할 수 있기 때문에, 이런 구현은 통상적으로 복잡한 소프트웨어 통합을 요구한다. 이런 소프트웨어 통합은 일반적으로 윈도우즈, 심비안, 및 등등과 같은 "개방" 운영 시스템들과 반대인 "폐쇄" 운영 시스템들(Nucleus 같은)에서 작동하는 모바일 핸드세트들을 사용할 때보다 복잡하게 된다.
그러므로, 레거시 LBA/대량 저장 모드(즉, 현재 레거시 호스트 파일 시스템들과 호환 가능한)에서 동작하기 위한 기회를 여전히 제공하면서 상기된 제한들을 극복하는 방법, 시스템, 및 장치가 원해진다.
대량 저장 장치들(SD 및 MMC 타입 대량 저장 장치를 포함하는 FLASH 메모리 장치들 같은)은 저장 용량 및 연관된 대량 저장 장치 제어기의 능력들(즉, 처리 자원들) 양쪽이 크게 증가하였다. 이용 가능한 저장 용량의 이런 증가는 장치들("호스트 장치들")의 일반 이용 가능성에 상호 의존성 효과를 가지며, 상기 장치들의 능력들은 이용 가능한 메모리에 크게 의존할 수 있다. 상기 장치들은 휴대용 미디어 플레이어들, 상호작용 퍼스널 통신 장치들(셀 폰들, PDA들 등) 및 기타 등등 같은 휴대용 디지털 장치를 포함한다. 이런 방식으로, FLASH 메모리 같은 대량 저장 장치들의 저장 능력을 사용하는 디지털 제품들에 대한 디지털 소비자들의 노출은 크게 증가하였다.
이런 노출은 통상적으로 다중 호스트 장치에 미친다 - 접속되거나 접속되지 않은 - 또는 액세스 노드들 - 유선 대 무선, 고정 대, 이동성 등 - 각각은 특정 저장 요구조건들을 가진다. 대량 저장 장치상에 저장된 데이터의 인덱스를 생성하기 위해 제안된 구성은 일반적으로 각각의 호스트 장치에 사용된 상이한 호스트-특정 프로그램을 갖는 것을 포함한다. 그 프로그램은 호스트 장치가 항상 또는 때때로 접속되는 호스트 장치 및/또는 원격 서버상에 설치된다.
그 다음 제안된 인덱싱 구성은 일반적으로 호스트 장치에 견고하게 결합된 프로그램을 포함한다. 따라서, 예를 들어, 호스트 장치에 견고하게 결합된 상기 인덱싱 프로그램은 일반적으로 그 호스트 장치와 함께 동작하도록 주문 제작되어야 한다. 추가로, 데이터 인덱싱에 강하게 연루되는 호스트 장치는 다른 기능들을 위해 원해지거나 요구될 수 있는 호스트 장치로부터 처리 전력을 얻을 수 있다.
레거시 인덱싱 구성의 다른 가능한 단점은 "콘텐트 측-로드"로서 입증되고, 여기서 모바일 호스트 장치는 예를 들어, USB 케이블을 통하여 컴퓨터에 접속되고 콘텐트는 저장 장치에 저장된다. 이 경우, 모바일 호스트가 접속되는 컴퓨터의 파일 시스템은 장치를 관리하는 파일 시스템이고, 상기 파일 시스템은 컴퓨터에 의해 수행되는 저장 동작을 인식하는 것이 아니고 콘텐트를 인덱싱하는 모바일 인덱싱 애플리케이션을 유발한다.
통상적으로 잘 공지된 표준들로 컴파일한 "버스"로서 지칭된 복수의 전도성 와이어들을 사용하는 상이한 장치에 호스트 프로세서를 접속하는 것은 일반적이다. 버스에 접속된 장치들은 메모리/저장 장치들, 통신 장치들, 감지 장치들 등을 포함할 수 있고, 이들 장치들은 고정되거나 제거 가능할 수 있다. 대부분의 상황들에서, 버스를 정의하는 일부 또는 모든 와이어들은 버스에 접속된 임의의 장치들 및/또는 모든 장치들 사이에서 공유된다. 버스에 결합된 장치들이 동일한 전도성 와이어들을 공유하기 때문에, 각각의 장치에는 통상적으로 버스 상의 유일한 ID 또는 어드레스가 할당되고 상기 장치는 유일한 ID/어드레스에 할당된 메시지들에만 응답하도록 구성된다. 이런 방식으로, 다중 장치들은 버스를 형성하는 동일한 전도성 와이어들을 공유할 수 있고, 이는 요구되는 버스 크기보다 실질적으로 버스 크기가 감소되게 한다.
통상적으로, 마스터/슬레이브 버스 프로토콜은 버스를 위해 채택된다. 마스터/슬레이브는 하나의 장치 또는 프로세스가 하나 또는 그 이상의 다른 장치를 통해 일방향 제어를 갖는 통신 프로토콜에 대한 모델이다. 종래의 시스템에서, 일단 장치들 또는 프로세스들 사이에 마스터/슬레이브 관계가 설정되면, 제어 방향은 항상 마스터로부터 슬레이브들로 향하고, 즉 슬레이브는 트랜잭션을 개시할 수 없다. 몇몇 시스템들에서 마스터는 슬레이브들의 역할을 하는 다른 장치를 갖는 적격의 장치들의 그룹으로부터 선택된다. 종래의 시스템들에서, 데이터는 슬레이브 장치들 사이에서 직접 전달되지 않는다; 오히려, 데이터는 통상적으로 공용 버스를 통하여 소스 슬레이브 저장 장치로부터 호스트 제어기 또는 다른 중개자로 - 상기 중개자에서 데이터는 공통 버스를 통해 호스트 제어기에 의해 재출력되기 전에 일시적으로 캐시되고 - 그 다음 데이터가 버스로부터 판독 및 저장되는 목적지 슬레이브 저장 장치로 향해진다.
종래의 시스템들이 잘 작동하는 동안, 장치들 사이의 데이터 전달을 위해 요구된 호스트 CPU 자원들을 감소시키고 또한 호스트 및/또는 다른 임시 저장 장치들의 버스 사용 및 메모리 요구조건들을 감소시키는 것은 바람직하다.
시장에서 휴대용(즉, 소형 팩터, 핸드헬드) 소비자 전자 제품의 수와 종류가 급격히 증가하고 있다. 이들 휴대용 소비자 전자 제품은, 예를 들어, PDA, 미디어 플레이어, 휴대 전화, 카메라를 포함한다. 경쟁과 다른 이유로 인해, 이들 소비자 전자 제품은 그 기능을 증가시켰다. 예를 들어, 휴대 전화는 PDA와 카메라 기능을 추가하였고, PDA는 휴대 전화와 음악 플레이어 기능을 추가하였으며, 미디어 플레이어는 PDA와 비디오 게임 기능을 추가하였고, 기타 등등이 있다.
주 기능을 제공하기 위하여, 휴대용 소비자 전자 제품은 종래의 대량 저장 장치에 저장된 콘텐트를 사용하는 호스트 애플리케이션을 실행하기 위해 호스트 장치를 사용한다. 호스트 애플리케이션은 차례로 핸드헬드 소비자 제품의 주 기능에 직접 관련된 핵심 서비스들 및 저장 장치에 저장된 콘텐트의 조작 및 관리에 관련된 보조 서비스들 양쪽을 제공할 수 있다. 예를 들어, 미디어 플레이어가 MP3 파일 같은 미디어 파일을 플레이하기 위해, 호스트 애플리케이션은 저장 장치에 저장된 음악 파일(MP3 파일 형태)을 검색 및 플레이하기 위한 미디어 플레이어 애플리케이션 형태의 핵심(core) 애플리케이션을 사용할 수 있다. 호스트 애플리케이션은 또한 저장 장치에 저장된 음악 파일들을 관리하는 능력을 사용자에게 제공하기 위하여 보조 서비스들 애플리케이션을 사용할 수 있다. 상기 사용자 관리는 특정 음악 파일, 음악 장르, 가수 등 플레이리스트 조작 및 생성, 분류 및 검색을 포함할 수 있다. 이미지들(스틸 및 비디오 모두)을 디스플레이하기 위하여 배열된 미디어 플레이어의 경우, 핵심 애플리케이션은 적색 눈 감소, 검정 및 백색 전환, 이미지 크롭핑(cropping) 및 회전 같은 터치-업 능력들을 사용자에게 제공하는 사진 디스플레이 및 편집 애플리케이션 형태를 취할 수 있다. 연관된 보조 서비스들 애플리케이션은 사용자가 이미지들을 분류, 저장 및 목록 형성하게 하는 이미지 및/또는 비디오 관리 프로그램 형태를 취할 수 있다.
그러므로, 호스트 애플리케이션은 핵심 서비스들(MP3 파일 플레이, 이미지 파일 디스플레이, 또는 비디오 파일(MP4) 플레이 같은) 및 콘텐트 관리 및 조작(이미징 분류 및 목록 형성, MP3 파일들 분류, 플레이리스트 편집, 콘텐트 검색, 인덱싱 및 등등)에 관련된 보조 서비스들 양쪽을 제공하도록 호출될 수 있다. 그러나, 호스트 애플리케이션이 핵심 서비스를 제공하는지 보조 서비스를 제공하는지에 무관하게, 호스트 애플리케이션은 모든 파일들이 논리 블록 포맷을 사용하여 저장되는 저장 장치에 저장된 데이터에 액세스하여야 한다. 논리 블록 포맷으로 데이터를 저장하는 것은 통상적으로 핵심 애플리케이션(예를 들어, 음악 파일 플레이)에 과도한 부담을 나타내지 않지만, 대량 저장 장치들이 논리 파일 레벨에서보다, 대량 저장 장치 블록의 입도(granularity)에서 동작하기 때문에, 보조 서비스는 최적으로 구성될 수 없다. 이것은 많은 파일들(MP3 같은)이 미리 결정된 크기이기 때문에 특히 진실이고, 상기 파일들은 종래의 대량 저장 장치에 의해 부과된 논리 블록으로서가 아닌 데이터 오브젝트로서 보다 자연스럽게 저장된다.
이들 휴대용 제품들이 제한된 프로세싱 자원들 및 이용 가능한 RAM 모두를 가지기 때문에, 휴대용 소비자 전자 제품이 데이터 오브젝트로서 보다 자연스럽게 저장될 수 있는 논리 블록으로서 저장된 데이터를 처리하도록 호스트 애플리케이션(특히 보조 애플리케이션)에 요구하는 강도 높은 프로세스 임무를 수행하도록 호출될 때 어려움들이 발생할 수 있다. 특히, 이것은 느린 응답성을 유발하는 긴 실행 시간들 및 호스트 프로세서에 의한 과도한 전력 소비를 유발할 수 있는 보조 서비스들의 환경에서의 대부분의 호스트의 프로세싱 자원들을 소비하는 검색/질문 동작들(즉, '판독-관련' 명령들)이다. 이런 방식에서, 사용자는 사용자들이 느리며 배터리 수명이 짧은 제품을 좋아하지 않기 때문에 부정적인 사용자 경험을 남길 수 있다.
따라서, 이러한 단점을 해결하는 인덱싱 방법, 시스템, 및 장치가 바람직하다.
본 발명의 다른 실시예에 따라, 여러 방법, 장치 및 시스템은 분산된 저장 서비스를 제공하도록 기술된다. 이런 서비스는 로컬 저장 장치와 최종 사용자 사이의 직접적인 상호작용을 포함한다.
본 발명의 일 실시예는 적어도 호스트 장치(HD) 및 HD에 의해 관리되는 로컬 저장 장치(LSD)를 포함하는 컴퓨팅 시스템을 기술한다. LSD는 HD에 의해 제공된 인터페이스 외에 HD 장치 외부 장치에 대한 임의의 인터페이스를 사용하지 않는다. LSD는 LSD와 런칭 애플리케이션 사이에 통신 경로를 설정하기 위하여 HD를 프롬프트하도록 LSD 논리 요청을 사용함으로써 요청 프로세스를 실행하기 위해 HD를 간접적으로 프롬프트한다. LSD와 런칭 애플리케이션은 HD에 의한 개입 없이 통신 경로를 통해 논리적으로 상호작용한다. 논리 상호작용은 런칭 애플리케이션이 요청 프로세스를 실행하도록 HD를 프롬프트하게 한다.
본 발명의 한 가지 양상에서, 런칭 애플리케이션은 HD에 의해 관리되는 SIM과 연관된다. SIM 카드는 명령의 SIM 애플리케이션 툴키트(Tollkit) 세트 또는 명령의 USIM 애플리케이션 툴키트에 순응할 수 있다.
다른 실시예에서, 컴퓨팅 시스템에서 요청 프로세스를 실행하기 위하여 HD를 간접 프롬프팅하기 위한 방법은 기술된다. 컴퓨팅 시스템은 호스트 장치(HD) 및 HD에 의해 관리되는 로컬 저장 장치(LSD)를 포함하고, 여기서 LSD는 HD에 의해 제공된 인터페이스 외에 HD 외부의 장치에 대한 임의의 인터페이스를 사용하지 않는다. 상기 방법은 적어도 다음 동작들에 의해 수행된다:
LSD와 런칭 애플리케이션 사이에 통신 경로를 설정하기 위해 HD를 프롬프팅하기 위한 LSD 논리 요청을 사용하여, LSD 논리 요청은 통신 경로를 통해 상호작용하고, 런칭 애플리케이션이 요청 프로세스를 실행하기 위하여 HD를 프롬프팅하게 하고, 요청 프로세스를 실행하는 HD 개시 프로세스를 서비스하기 위하여 생성되지 않는다.
본 발명의 다른 실시예에 따라, 여러 방법들, 장치들 및 시스템들은 개선된 인터넷 애플리케이션(브라우저 같은) 성능을 제공하기 위해 기술된다. 하나의 실시예는 로컬 저장 장치(LSD)를 기술한다. LSD는 서로 독립적으로 관리는 적어도 제 1 부분 및 적어도 제 2 부분을 포함하도록 논리적으로 배열된 적어도 메모리 어레이를 포함한다. 제 1 애플리케이션은 제 1 부분 내 제 1 애플리케이션 콘텐트를 관리하고 제 2 애플리케이션은 제 2 부분 내 제 2 애플리케이션 콘텐트를 관리한다. 제 1 및 제 2 애플리케이션은 서로 독립적으로 실행되고 제 1 애플리케이션에 의한 제 1 애플리케이션 콘텐트의 관리는 제 2 애플리케이션에 의한 제 2 애플리케이션 콘텐트의 관리와 무관하다. LSD는 호스트 장치로부터 독립적으로 제 1 부분 내에 저장된 제 1 애플리케이션 콘텐트를 제 2 애플리케이션에 알린다.
다른 실시예에서, 컴퓨팅 시스템은 기술되고, 상기 컴퓨팅 시스템은 호스트 장치 파일 시스템(HDFS) 및 네트워크 인터페이스를 포함하는 적어도 호스트 장치, 적어도 제 1 부분 및 적어도 제 2 부분을 포함하도록 논리적으로 배열된 메모리 어레이를 포함하는 로컬 저장 장치(LSD)를 포함하고, 여기서 제 1 및 제 2 부분들은 서로 독립적으로 관리된다. 제 1 부분은 제 1 애플리케이션이 제 1 부분에서 제 1 애플리케이션 콘텐트를 관리하기 위하여 HDFS를 사용하도록 HDFS에 의해 관리되고, 제 2 부분은 제 2 부분이 HDFS에 보이지 않도록 HDFS에 의해 관리되지 않는다. 제 1 및 제 2 애플리케이션은 서로 독립적으로 실행하고, 제 1 애플리케이션에 의한 제 1 애플리케이션 콘텐트의 관리는 제 2 애플리케이션에 의한 제 2 애플리케이션의 관리와 무관하다. LSD는 제 1 부분에서 이용 가능한 제 1 애플리케이션 콘텐트를 제 2 애플리케이션에게 알리고 여기서 알림은 HD와 무관하다.
로컬 저장 장치(LSD)에 의해 수행되는 방법은 기술된다. LSD는 적어도 제 1 부분 및 적어도 제 2 부분에 논리적으로 배열된 메모리 어레이를 포함하고 제 1 및 제 2 부분들은 서로 무관하게 관리되고 제 1 애플리케이션은 제 1 부분 내 제 1 애플리케이션 콘텐트를 관리하고 제 2 애플리케이션은 제 2 부분 내 제 2 애플리케이션 콘텐트를 관리한다. 제 1 및 제 2 애플리케이션은 서로 독립적으로 실행되고, 제 1 애플리케이션에 의한 제 1 애플리케이션 콘텐트의 관리는 제 2 애플리케이션에 의한 제 2 애플리케이션 콘텐트의 관리와 무관하다. 상기 방법은 적어도 다음 동작들에 의해 수행된다: 호스트 장치와 무관하게 제 1 부분에 저장된 제 1 애플리케이션 콘텐트를 LSD에 의해 제 2 애플리케이션에게 알림.
다른 실시예에서, 호스트 장치(HD)와 통신하는 로컬 저장 장치(LSD)를 포함하는 시스템에 의해 실행된 컴퓨터 프로그램 제품은 기술된다. LSD는 서로 무관한 적어도 제 1 부분 및 적어도 제 2 부분을 포함하도록 논리적으로 배열된 메모리 어레이를 포함한다. 제 1 애플리케이션은 제 1 부분 내 제 1 애플리케이션 콘텐트를 관리하고 제 2 애플리케이션은 제 2 부분 내 제 2 애플리케이션을 관리한다. 제 1 및 제 2 애플리케이션은 서로 독립적으로 실행되고, 제 1 애플리케이션에 의한 제 1 애플리케이션 콘텐트의 관리는 제 2 애플리케이션에 의한 제 2 애플리케이션 콘텐트의 관리와 무관하다. 컴퓨터 프로그램 제품은 제 1 부분에 저장된 제 1 애플리케이션 콘텐트를 LSD에 의하여 제 2 애플리케이션에게 알리기 위한 컴퓨터 코드 - 여기서 알림은 HD와 무관함 -, 및 컴퓨터 코드를 저장하기 위한 컴퓨터 판독 가능 매체를 포함한다.
본 발명의 다른 실시예에 따라, 보호된 디지털 콘텐트를 안전하게 분배 및 소비하기 위하여 기술된 여러 방법들, 장치들 및 시스템들은 기술된다. 일 실시예에서, DRM 스킴에 따라 디지털 콘텐트 제공자에 의해 부착된 적어도 하나의 제한을 갖는 보호된 디지털 콘텐트를 획득하고 소비하기 위한 방법은 기술된다. 상기 방법은 메모리 어레이를 갖는 로컬 저장 장치(LSD)를 포함하는 시스템에 의해 수행될 수 있고, LSD는 메모리 어레이의 적어도 일부를 관리하도록 배열된 적어도 호스트 장치 파일 시스템(HDFS)을 갖는 호스트 장치(HD)와 결합된다. 상기 방법은 다음 동작들에 의해 수행될 수 있다: LSD에 의해 보호된 디지털 콘텐트를 획득하는 단계, LSD에 의해 메모리 어레이 내 상기 획득된 보호 디지털 콘텐트를 안전하게 저장하는 단계 - 여기서 획득 및 안전한 저장은 각각 DRM 스킴에 따르고, 어느 것도 HDFS에 의해 개시되지 않음 -, 및 보호된 디지털 콘텐트를 소비하는 단계. 보호된 디지털 콘텐트를 소비하는 것은 안전하게 저장된 보호된 디지털 콘텐트의 적어도 일부를 디지털 데이터 스트림으로 전환하고, LSD에 의해 디지털 데이터 스트림을 스트리밍 함으로써 수행될 수 있다. 만약 디지털 데이터 스트림이 사용 제한인 부착된 적어도 하나의 제한을 가지면, LSD는 사용 제한을 시행한다.
다른 실시예에서, DRM 스킴에 따라 디지털 콘텐트 제공자에 의해 부착된 적어도 하나의 제한을 갖는 보호된 디지털 콘텐트를 획득 및 소비하기 위한 컴퓨터 프로그램 제품은 기술된다. 컴퓨터 프로그램 제품은 메모리 어레이를 갖는 로컬 저장 장치(LSD)를 포함하는 시스템에 포함된 프로세서에 의해 실행될 수 있고, 여기서 LSD는 메모리 어레이의 적어도 일부를 관리하기 위하여 배열된 적어도 호스트 장치 파일 시스템(HDFS)을 갖는 호스트 장치(HD)와 결합된다. 컴퓨터 프로그램 제품은 LSD에 의해 보호된 디지털 콘텐트를 획득하기 위한 적어도 컴퓨터 코드, LSD에 의해 메모리 어레이 내 획득된 보호된 디지털 콘텐트를 안전하게 저장하기 위한 컴퓨터 코드 - 여기서 획득 및 안전한 저장은 각각 DRM 스킴에 따르고 HDFS에 의해 개시되지 않음 -, 안전하게 저장된 보호된 디지털 콘텐트의 적어도 일부를 디지털 데이터 스트림으로 전환하고, 그리고 LSD에 의해 디지털 데이터 스트림을 스트리밍함으로써 보호된 디지털 콘텐트를 소비하기 위한 컴퓨터 코드 - 여기서 만약 디지털 데이터 스트림이 사용 제한인 부착된 적어도 하나의 제한을 가지면, LSD는 사용 제한을 시행함 -, 및 컴퓨터 코드를 저장하기 위한 컴퓨터 판독 가능 매체를 포함한다.
다른 실시예에서, DRM 스킴에 따라 디지털 콘텐트 제공자에 의해 부착된 적어도 하나의 제한을 갖는 보호된 디지털 콘텐트를 획득하고 소비하기 위한 시스템은 기술된다. 상기 시스템은 적어도 호스트 장치 파일 시스템(HDFS)을 갖는 호스트 장치(HD), 및 메모리 어레이를 포함하는 호스트 장치(HD)와 결합된 로컬 저장 장치(LSD)를 포함하고, 상기 메모리의 적어도 일부는 HDFS에 의해 관리된다. LSD는 메모리 어레이 내에 보호된 디지털 콘텐트를 획득 및 안전하게 저장하고, 여기서 획득 및 안전 저장은 각각 DRM 스킴에 따르고, HDFS에 의해 개시된다. 보호된 디지털 콘텐트는 안전하게 저장된 보호된 디지털 콘텐트의 적어도 일부를 디지털 데이터 스트림으로 전환하고 LSD에 의해 디지털 데이터 스트림을 스트리밍함으로써 소비된다. 만약 디지털 데이터 스트림이 사용 제한인 부착된 적어도 하나의 제한을 가지면, LSD는 사용 제한을 시행한다.
다른 실시예에서, 컴퓨팅 시스템은 기술된다. 컴퓨팅 시스템은 적어도 호스트 장치 파일 시스템 및 LSD 드라이버를 갖는 호스트 장치(HD), 호스트 장치 파일 시스템(HDFS)에 의해 관리되는 적어도 하나의 저장 영역을 갖는 로컬 저장 장치(LSD), 및 LSD 외부에 있고 HD와 통신하는 요청 애플리케이션을 포함하고, 여기서 요청 애플리케이션은 HDFS 또는 LSD 드라이버와의 임의의 통신 경로를 사용하지 않는다. 요청 애플리케이션은 HDFS에 의한 개입 없이 적어도 하나의 저장 영역에 저장된 데이터의 선택된 부분을 판독하기 위하여 LSD를 강제하고, 그 다음 LSD는 적어도 하나의 저장 영역으로부터 판독된 선택된 데이터를 외부 애플리케이션에 스트리밍한다.
본 발명의 한 가지 양상에서, 만약 적어도 하나의 저장 영역에 저장된 데이터의 선택된 부분이 DRM 스킴에 따라 디지털 콘텐트 제공자에 의해 부착된 적어도 하나의 제한을 갖는 보호된 디지털 콘텐트이면, LSD는 적어도 하나의 저장 영역으로부터 판독된 보호된 디지털 콘텐트를 거기에 부착된 적어도 하나의 제한을 갖는 디지털 데이터 스트림으로 전환함으로써 적어도 하나의 저장 영역으로부터 판독된 보호된 디지털 콘텐트를 외부 애플리케이션에 스트리밍한다. 만약 디지털 데이터 스트림에 부착된 적어도 하나의 제한이 사용 제한이면, LSD는 사용 제한을 시행한다.
본 발명의 특정 실시예에 따라, 여러 방법들, 장치들 및 시스템들은 호스트 장치(HD)로부터 로컬 저장 장치(LSD)로 전송된 관리 명령을 서비스하기 위해 기술된다. 일 측면에서, HD와 통신시 로컬 저장 장치(LSD)에 의해 호스트 장치(HD) 내의 호스트 장치 파일 시스템(HDFS)으로부터 전송된 관리 명령을 서비스하기 위한 방법은 기술된다. 상기 방법은 연관된 로컬 어드레스들 상에서의 동작을 실행하도록 LSD에게 명령하는 제 1 관리 명령을 LSD에서 수신하는 것을 포함한다. 제 1 관리 명령이 논리 어드레스들의 적어도 제 1 세트와 연관되면, 상기 방법은 RD 내의 메모리 위치들 상에서의 동작을 실행하도록 RD에게 명령하는 제 2 관리 명령을 LSD 외부의 장치(RD)에 적어도 전송함으로써 LSD에 의한 제 1 관리 명령을 서비스하는 것을 포함한다. 여러 실시예에서, RD로의 제 2 관리 명령의 전송 및 RD 내의 메모리 위치들 상에서 제 1 관리 명령과 연관된 동작의 실행은 HDSF에 보이지 않는다. 만약 제 1 관리 명령이 논리 어드레스들의 제 1 세트와 연관되지 않으면, 상기 방법은 LSD 내의 메모리 위치들 상 LSD에 의해 실행된 동작들에 의해서만 LSD에 의해 제 1 관리 명령을 서비스하는 것을 포함한다. 여러 실시예에서, LSD는 HD를 통하여 제공된 것 외에 LSD 외부의 임의의 다른 장치에 대한 임의의 다른 물리적 인터페이스를 사용하지 않는다.
특정 실시예에 따라, 만약 관리 명령이 논리 어드레스들의 적어도 제 1 세트와 연관되면, 상기 방법은 HD를 통하여 LSD 및 RD 사이에 통신 경로를 설정하기 위하여 LSD에 의해 HD를 프롬프팅하는 것을 더 포함한다. 바람직한 실시예에서, 일단 통신 경로가 설정되면, HD에 의한 추가 개입은 통신 경로를 유지하는 것을 제외하고 요구되지 않는다.
본 발명의 시스템 양상에서, 컴퓨팅 시스템은 기술되고 적어도 호스트 장치 파일 시스템(HDFS)을 갖는 호스트 장치(HD) 및 HD/LSD 인터페이스에 의해 HD와 결합된 논리 저장 장치(LSD)를 포함한다. LSD는 메모리 어레이 및 메모리 어레이를 로컬적으로 관리하기 위하여 배열된 LSD 제어기를 포함한다. 메모리 어레이는 HD/LSD 인터페이스에 의해 관리 명령을 LSD 제어기에 전송함으로써 LSD 제어기를 통하여 HDFS에 의해 외부적으로 관리되는 적어도 하나의 대량 저장 영역을 포함하도록 논리적으로 배열된다. 관리 명령은 연관된 메모리 어드레스들 상 동작을 실행하도록 LSD에게 명령할 수 있다. 특정 실시예에 따라, 만약 LSD 제어기가 HDFS로부터 수신된 제 1 관리 명령이 논리 어드레스들의 적어도 제 1 세트와 연관된 것을 결정하면, LSD 제어기는 적어도 RD 내의 메모리 위치들 상에서 동작을 실행하도록 RD에게 명령하는 제 2 관리 명령을 LSD 외부의 장치(RD)에 전송하고, RD에 제 2 관리 명령의 전송 및 HDFS에 보이지 않는 RD 내의 메모리 위치들 상 제 1 관리 명령과 연관된 동작의 실행에 의해 제 1 관리 명령을 서비스한다. 또한, 몇몇 실시예에서, 만약 LSD 제어기가 HDFS로부터 수신된 제 1 관리 명령이 논리 어드레스들의 적어도 제 2 세트와 연관된 것을 결정하면, LSD 제어기는 LSD 대량 저장 영역 내 메모리 위치들 상에서 LSD에 의해 실행되는 동작들에 의해 제 1 관리 명령을 서비스한다.
다른 양상에서, 컴퓨터 시스템은 기술되고 적어도 호스트 장치 파일 시스템(HDFS)을 갖는 호스트 장치(HD)를 포함한다. 시스템은 HD/LSD 인터페이스에 의해 HD와 결합된 로컬 저장 장치(LSD)를 포함하고, LSD는 메모리 어레이 및 메모리 어레이를 로컬적으로 관리하도록 배열된 LSD 제어기를 포함하고, 메모리 어레이는 HD/LSD 인터페이스에 의해 관리 명령들을 LSD 제어기에 전송함으로써 LSD 제어기를 통하여 HDFS에 의해 외부적으로 관리되는 적어도 하나의 대량 저장 영역을 포함하도록 논리적으로 배열된다. 여러 실시예에서, HDFS는 제 2 관리 명령을 RD에 포워딩하도록 LSD에게 명령하는 제 1 관리 명령을 LSD에 전송함으로써 LSD를 통하여 LSD 외부의 장치(RD)를 관리하도록 추가로 구성된다.
다른 양상에서, LSD와 통신시 호스트 장치(HD) 내의 호스트 장치 파일 시스템(HDFS)로부터 전송된 관리 명령을 서비스하기 위하여 로컬 저장 장치(LSD) 내의 하나 또는 그 이상의 실체적인 미디어 내에 인코딩된 논리는 기술된다. 실행될 때, 논리는 LSD에서 제 1 관리 명령을 수신하도록 동작하고, 제 1 관리 명령은 연관된 논리 어드레스들 상에서 동작을 실행하도록 LSD에게 지시하고, 만약 제 1 관리 명령이 논리 어드레스들의 적어도 제 1 세트와 연관되면, RD 내의 메모리 위치들 상 동작을 실행하도록 RD에게 명령하는 제 2 관리 명령을 LSD 외부의 장치(RD)에 적어도 전송함으로써 LSD에 의해 제 1 관리 명령을 서비스하고 - RD에 제 2 관리 명령의 전송 및 RD 내 메모리 위치들 상 제 1 관리 명령과 연관된 동작의 실행은 HDFS에 보이지 않음 -, 그렇지 않으면 LSD 내의 메모리 위치들 상 LSD에 의해 실행되는 동작들에 의해서만 LSD에 의해 제 1 관리 명령을 서비스한다.
한 가지 양상에 따라, 호스트 장치(HD)를 갖는 컴퓨팅 장치는 로컬 저장 장치(LSD)와 통신하고, 여기서 LSD는 메모리 어레이를 포함한다. LSD의 메모리 어레이에 저장된 데이터에 관련하여 검색 인덱스를 생성하기 위한 방법이 동작한다. HD의 연루 없이 LSD에 의해, 인덱스 데이터는 LSD의 메모리 어레이에 저장된 데이터에 대해 생성된다. LSD에 의해, 생성된 인덱스 데이터는 검색 인덱스의 적어도 일부로서 LSD 상에 저장된다. 인덱스는 LSD의 데이터에 대한 검색 질문들에 응답하도록 사용될 수 있는 데이터를 포함할 수 있다. 질문들은 LSD로부터 또는 LSD 내에서보터 발생될 수 있다. 인덱스의 사용은 검색 질문들에 응답하는 것으로 제한되지 않는다. 예를 들어, 인덱스는 콘텐트 스크리닝을 위해 사용될 수 있다.
다른 실시예에 따라, 여러 방법들, 장치들 및 시스템들은 저장 서비스를 제공하기 위해 기술된다. 일 실시예는 시스템을 기술한다. 시스템은 적어도 데이터 저장 어레이, 논리 데이터 블록으로서 데이터 저장 어레이에 저장된 데이터를 관리하는데 적합한 제 1 논리 인터페이스, 및 논리 데이터 블록으로서 저장된 데이터에 대응하는 데이터 오브젝트를 관리하는데 적합한 제 2 논리 인터페이스를 포함한다. 논리 데이터 블록으로서 저장된 데이터의 적어도 일부가 제 1 인터페이스에 의해 변형될 때, 변형된 데이터는 제 1 및 제 2 인터페이스 양쪽에 의해 액세스할 수 있고, 제 2 인터페이스에 의해 액세스할 수 있을 때 데이터 오브젝트 특성의 미리 결정된 세트를 동시에 관리하는 것을 포함한다.
다른 실시예는 로컬 저장 장치(LSD)를 기술한다. 로컬 저장 장치는 데이터 저장 어레이, 로컬 데이터 블록으로서 데이터 저장 어레이에 저장된 데이터를 관리하는데 적합한 제 1 논리 인터페이스, 및 논리 데이터 블록으로서 저장된 데이터에 대응하는 데이터 오브젝트를 관리하는데 적합한 제 2 논리 인터페이스를 포함한다. 논리 데이터 블록으로서 저장된 데이터의 적어도 일부가 제 1 인터페이스에 의해 변형될 때, 변형된 데이터는 제 1 및 제 2 인터페이스 양쪽에 의해 액세스할 수 있다. 제 2 인터페이스에 의한 액세스는 데이터 오브젝트 특성의 미리 결정된 세트를 동시에 관리시킨다.
다른 실시예에서, 방법은 기술된다. 상기 방법은 데이터 저장 어레이에서 적어도 다음 동작을 수행함으로써 수행된다. 제 1 인터페이스에 의해 논리 데이터 블록으로서 데이터 저장 어레이에 저장된 데이터 관리, 및 제 2 인터페이스에 의해 데이터 저장 어레이에 저장된 데이터 오브젝트들 관리 - 여기서 데이터 오브젝트는 논리 데이터 블록으로서 저장된 데이터에 대응함 -. 논리 데이터 블록으로서 저장된 데이터가 제 1 인터페이스에 의해 변형될 때, 변형된 데이터는 제 1 및 제 2 인터페이스 양쪽에 의해 액세스할 수 있다. 제 2 인터페이스에 의한 액세스는 데이터 오브젝트 특성의 미리 결정된 세트를 동시에 관리하는 것을 포함한다.
본 발명은, 로컬 저장 장치가 동작 가능하게 결합된 호스트 장치를 포함하지 않으면서 로컬 저장 장치에서 데이터를 인덱스하기 위한 능력을 포함하는 로컬 저장 장치를 제공하는 효과를 갖는다.
도 1은, 본 발명의 실시예에 따른 시스템의 심볼 표현을 도시한 도면.
도 2a~2c는, 본 발명의 실시예에 따른 호스트 장치/로컬 저장 장치 시스템을 도시한 도면.
도 3a~3b는, 본 발명의 실시예 따른 컴퓨팅 시스템을 도시한 도면.
도 4는, 본 발명의 실시예에 따른 컴퓨팅 시스템을 도시한 도면.
도 5a~5b는, 도 3에 도시된 네트워크의 보다 상세한 도면을 도시한 도면.
도 6은, 본 발명의 실시예에 따른 프로세스를 열거하는 흐름도를 도시한 도면.
도 7은, 본 발명의 실시예에 따른 프로세스를 열거하는 흐름도를 도시한 도면.
도 8은, 본 발명의 실시예에 따른 대표적인 미디어 네트워크를 도시한 도면.
도 9는, 본 발명에 따른 대표적인 컴퓨팅 시스템을 도시한 도면.
도 10은, 도 9에 도시된 컴퓨팅 시스템의 특정 구현을 도시한 도면.
도 11은, 본 발명의 실시예에 따른 로컬 저장 장치의 대표적인 구현을 도시한 도면.
도 12a~b는, 본 발명의 실시예를 도시한 도면.
도 13은, 본 발명의 실시예에 따른 호스트 장치/로컬 저장 장치 시스템을 도시한 도면.
도 14a~14b는, 본 발명의 실시예에 따른 로컬 저장 장치(LSD)의 맵핑 테이블 및 인식된 저장 용량의 다이어그램 대표도를 각각 도시한 도면.
도 15는, 본 발명의 실시예에 따른 관리 명령을 서비스하기 위한 프로세스를 도시하는 흐름도를 도시한 도면.
도 16은, 도 15의 프로세스에 사용하는데 적합한 시스템을 도시한 도면.
도 17은, 호스트 장치(HD)와 로컬 저장 장치를 포함하는 컴퓨팅 시스템을 도시한 도면으로서, LSD는 LSD의 메모리 어레이에 저장된 데이터를 인덱스하도록 구성된, 도면.
도 18은, 인덱스 데이터가 HD에 의해 LSD에 대한 데이터 액세스를 기초로 생성되는 예를 도시한 도면.
도 19는, 인덱싱 데이터가 HD에 의해 얻어지고/얻어지거나 사용될 수 있는 시스템의 예시적인 구성을 도시한 도면.
도 20은, 인덱싱 데이터가 마스터/슬레이브 예의 외부에 있는 외부 장치로 전달될 수 있는 예시적인 구성을 도시한 도면.
도 21은, LSD가 LSD의 메모리 어레이에 저장된 데이터를 가리키는 데이터를 인덱싱하는 것을 결정할 수 있는 방법을 넓은 측면에서 도시하는 흐름도.
도 22는, 본 발명의 실시예에 따른 시스템의 간략화된 블록도를 도시한 도면.
도 23은, 본 발명의 실시예에 따른 예시적인 저장 장치의 간략화된 블록도를 도시한 도면.
도 24는, 저장 장치 사이에서 데이터를 직접 전달하는 프로세스를 도시하는 흐름도를 도시한 도면.
도 25는, 본 발명의 실시예에 따른 데이지 체인(daisy chain) 구성으로 배열된 복수의 저장 장치를 포함하는 시스템의 간략화된 블록도를 도시한 도면.
도 26은, 호스트 장치(HD)와 로컬 저장 장치(LSD)를 포함하는 시스템을 도시한 도면.
도 27은, 동기화기의 일 실시예를 도시한 도면.
도 28 내지 29는, 기술된 실시예의 환경에서 수행될 수 있는 여러 동작을 도시한 도면.
도 30은, 기술된 실시예에 따른 흐름도를 도시한 도면.
도 31은, 기술된 실시예에 따른 대표적인 미디어 네트워크를 도시한 도면.
도 2a~2c는, 본 발명의 실시예에 따른 호스트 장치/로컬 저장 장치 시스템을 도시한 도면.
도 3a~3b는, 본 발명의 실시예 따른 컴퓨팅 시스템을 도시한 도면.
도 4는, 본 발명의 실시예에 따른 컴퓨팅 시스템을 도시한 도면.
도 5a~5b는, 도 3에 도시된 네트워크의 보다 상세한 도면을 도시한 도면.
도 6은, 본 발명의 실시예에 따른 프로세스를 열거하는 흐름도를 도시한 도면.
도 7은, 본 발명의 실시예에 따른 프로세스를 열거하는 흐름도를 도시한 도면.
도 8은, 본 발명의 실시예에 따른 대표적인 미디어 네트워크를 도시한 도면.
도 9는, 본 발명에 따른 대표적인 컴퓨팅 시스템을 도시한 도면.
도 10은, 도 9에 도시된 컴퓨팅 시스템의 특정 구현을 도시한 도면.
도 11은, 본 발명의 실시예에 따른 로컬 저장 장치의 대표적인 구현을 도시한 도면.
도 12a~b는, 본 발명의 실시예를 도시한 도면.
도 13은, 본 발명의 실시예에 따른 호스트 장치/로컬 저장 장치 시스템을 도시한 도면.
도 14a~14b는, 본 발명의 실시예에 따른 로컬 저장 장치(LSD)의 맵핑 테이블 및 인식된 저장 용량의 다이어그램 대표도를 각각 도시한 도면.
도 15는, 본 발명의 실시예에 따른 관리 명령을 서비스하기 위한 프로세스를 도시하는 흐름도를 도시한 도면.
도 16은, 도 15의 프로세스에 사용하는데 적합한 시스템을 도시한 도면.
도 17은, 호스트 장치(HD)와 로컬 저장 장치를 포함하는 컴퓨팅 시스템을 도시한 도면으로서, LSD는 LSD의 메모리 어레이에 저장된 데이터를 인덱스하도록 구성된, 도면.
도 18은, 인덱스 데이터가 HD에 의해 LSD에 대한 데이터 액세스를 기초로 생성되는 예를 도시한 도면.
도 19는, 인덱싱 데이터가 HD에 의해 얻어지고/얻어지거나 사용될 수 있는 시스템의 예시적인 구성을 도시한 도면.
도 20은, 인덱싱 데이터가 마스터/슬레이브 예의 외부에 있는 외부 장치로 전달될 수 있는 예시적인 구성을 도시한 도면.
도 21은, LSD가 LSD의 메모리 어레이에 저장된 데이터를 가리키는 데이터를 인덱싱하는 것을 결정할 수 있는 방법을 넓은 측면에서 도시하는 흐름도.
도 22는, 본 발명의 실시예에 따른 시스템의 간략화된 블록도를 도시한 도면.
도 23은, 본 발명의 실시예에 따른 예시적인 저장 장치의 간략화된 블록도를 도시한 도면.
도 24는, 저장 장치 사이에서 데이터를 직접 전달하는 프로세스를 도시하는 흐름도를 도시한 도면.
도 25는, 본 발명의 실시예에 따른 데이지 체인(daisy chain) 구성으로 배열된 복수의 저장 장치를 포함하는 시스템의 간략화된 블록도를 도시한 도면.
도 26은, 호스트 장치(HD)와 로컬 저장 장치(LSD)를 포함하는 시스템을 도시한 도면.
도 27은, 동기화기의 일 실시예를 도시한 도면.
도 28 내지 29는, 기술된 실시예의 환경에서 수행될 수 있는 여러 동작을 도시한 도면.
도 30은, 기술된 실시예에 따른 흐름도를 도시한 도면.
도 31은, 기술된 실시예에 따른 대표적인 미디어 네트워크를 도시한 도면.
첨부 도면에 도시된 본 발명의 예의 특정 실시예가 지금 상세히 참조될 것이다. 본 발명이 특정 실시예와 관련하여 기술될 것이지만, 본 발명이 기술된 실시예로 제한되지 않는 것이 이해될 것이다. 이와 대조하여, 첨부된 청구항에 의해 정의된 바와 같은 본 발명의 사상과 범위 안에 포함될 수 있는 대안, 변형, 및 등가물을 포함하는 것으로 의도된다. 여기에 기술된 임의의 기능 블록 또는 기능 어레인지먼트는 물리 엔티티 또는 논리 엔티티로 구현되거나, 이 모두의 결합으로 구현될 수 있음을 주의하여야 한다.
저장 장치 제어기의 능력들의 증가로, 저장 장치 제어기에 의해 이용되는 프로세싱 자원들을 사용하여 저장 장치 내에서 소프트웨어 애플리케이션들을 실행하는 것은 가능하게 된다. 저장 장치 제어기의 이런 강화된 동작 능력은 사용자-기원(oriented) 저장 서비스들 같은 새로운(그리고 지금까지 실행할 수 없었던) 상호작용 모드들의 패러다임을 유도한다. 사용자 기원 저장 서비스는 통상적으로 다중 장치들 - 접속되거나 접속되지 않은 - 액세스 노드들 - 유선 대 무선, 고정 대 모바일 등 - 각각은 특정 저장 요구조건들을 가짐 - 에 걸쳐있는 사용자의 디지털 콘텐트 소비 경험을 개선하기 위해 사용될 수 있다.
"사용자-중심"(종래 "장치-중심"과 대조됨) 저장 관리 접근법을 지원하기 위해, 본 발명은 호스트 관리, LBA-기반 대량 저장 패러다임의 엄격한 제한들을 넘어서고 레거시 대량 저장 장치들과 거꾸로 완전히 호환 가능하면서 다른 종류의 상호작용들을 갖는 대량 저장을 강화하는 저장 서비스 패러다임을 제공한다. 다른 종류의 상호작용들은 예를 들어, 여러 물리적 위치들(즉, 호스트 컴퓨터에서, 또는 네트워크를 통해 데이터 저장 장치)에 걸쳐 잠재적으로 분산될 저장 자원들 및 서비스 형성 블록들을 위해 허용한다.
이런 생각으로, 저장 서비스들 패러다임은 로컬 데이터 저장 장치가 지금 1) 동일한 호스트 컴퓨터 내에 존재하는 다른 데이터 저장 장치들, 또는 원격 서버 컴퓨터 상에서 작동하는 애플리케이션들과 상호작용할 수 있고, 그리고 2) 상호작용들이 호스트 애플리케이션 또는 원격 서버에 의해 데이터 저장 장치 자체에 의해 개시될 수 있는 것을 제공한다.
본 발명은 추가로 상기된 메모리 장치를 포함하는 전자 시스템에 속할 수 있다. 메모리 장치들(즉, 메모리 카드들)은 여러 전자 제품들에 사용하기 위한 디지털 데이터를 저장하기 위해 일반적으로 사용된다. 메모리 장치는 전자 시스템으로부터 종종 제거 가능하여 저장된 디지털 데이터는 휴대할 수 있다. 본 발명에 따른 메모리 장치들은 비교적 소형의 팩터를 가질 수 있고 카메라들, 핸드헬드 또는 네트워크 컴퓨터들, 네트워크 카드들, 네트워크 기구들, 셋톱 박스들, 핸드헬드 또는 다른 작은 미디어(예를 들어, 오디오) 플레이어들/레코더들(예를 들어, MP3 장치들), 및 의료 모니터들 같은 데이터를 획득하는 전자 제품들 용 디지털 데이터를 저장하기 위해 사용된다.
본 발명의 실시예는 도 1~31을 참조하여 아래 논의된다. 그러나, 당업자는 도면에 관련하여 여기에 제공된 상세한 설명이 본 발명이 제한된 실시예들을 넘어 확장할 때 설명 목적을 위한 것임을 쉽게 인식할 것이다. 본 발명이 멀티 미디어 카드(MMC) 및 보안 디지털 카드(SD) 같은 비-휘발성 메모리를 포함할 수 있는 임의의 타입의 로컬 데이터 저장 장치에 사용될 수 있다는 것을 고려한다는 것을 주의해야 한다.
도 1은 본 발명의 실시예에 따른 마스터 장치/슬레이브 시스템(100)의 심볼 표현을 도시한다. 예를 들어, 여기에 기술된 특정 실시예에 따라, 슬레이브 장치는 상기된 임의의 로컬 저장 장치들로 제한되지 않는 로컬 저장 장치 형태를 취할 수 있고, 마스터 장치는 상기된 임의의 호스트 장치들로 제한되지 않는 호스트 장치 형태를 취한다. 마스터/슬레이브가 통신 프로토콜을 위한 모델인 것을 주의해야 하고, 하나의 장치 또는 프로세스가 하나 또는 그 이상의 다른 장치를 통하여 일방향 제어를 갖는 통신 프로토콜에 대한 모델이라는 것을 주의해야 한다. 종래의 시스템에서, 장치들 또는 프로세스들 사이의 마스터/슬레이브 관계가 설정되면, 제어 방향은 항상 마스터로부터 슬레이브들로 이다. 몇몇 시스템들에서 마스터는 슬레이브들의 역할로 동작하는 다른 장치를 갖는 바람직한 장치들의 그룹으로부터 선택된다. 따라서, 마스터/슬레이브 시스템(100)(이후 시스템 100으로서 간단히 지칭됨)은 종래의 마스터/슬레이브 패러다임(106)에 의해 부분적으로 서로 관련된 마스터 장치(102) 및 슬레이브 장치(104)를 포함한다. 슬레이브 장치(104)는 마스터 장치(102)에 의해 제공된 것 외에 다른 마스터 장치(102) 외부의 임의의 장치에 대한 임의의 인터페이스를 사용하지 않는다.
마스터 장치(102)는 복수의 마스터 장치 프로세스들(108)을 동작시킬 수 있다. 마스터 장치 프로세스에 의해, 프로세스가 마스터 장치의 이익을 위해서만 실행되는 것이 의미된다. 상기 마스터 장치 프로세스들은 예를 들어, 실행 가능한 명령을 마스터 장치(102)에 제공하는데 유용한 페치 지시 명령 같은 임의의 수 및 타입의 프로세스들을 포함할 수 있다. 마스터 장치 프로세스들(108)은 각각 프로세싱 유니트(116)에 의해 실행될 수 있는 마스터 장치 프로세스들(110, 112 및 114)을 포함할 수 있다. 임의의 프로세스들(110, 112 또는 114)은 슬레이브장치 서비스들(118)로부터 서비스를 요청할 수 있다. 예를 들어, 프로세스(110)는 마스터 장치 요청(120)을 생성함으로써 슬레이브 장치 서비스(118)로부터 서비스를 요청할 수 있다. 슬레이브 장치 서비스(118)는 슬레이브 장치 응답(122)으로 마스터 장치 요청(120)에 응답할 수 있다. 예를 들어, 마스터 장치 요청(120)은 READ 명령 형태를 가질 수 있고 요청된 슬레이브 서비스 응답(122)은 DATA 형태를 가질 수 있다. 그러나, 종래의 마스터/슬레이브 패러다임(106)의 범위들 내에서, 슬레이브 장치(104)는 마스터 장치(102)가 마스터 장치 프로세스들(108) 외측의 임의의 프로세스를 프롬프트하거나 임의의 방식으로 실행하지 못하게 할 수 있다. 다른 말로, 종래의 마스터/슬레이브 패러다임(106)의 환경 내에서, 마스터 장치(102) 만이 적어도 하나의 마스터 장치 프로세스들(108)을 실행할 수 있다.
그러나, 본 발명은 슬레이브 장치(104)가 슬레이브 장치(102)의 이익에 대한 요청 프로세스(124)를 실행하게 하도록 프로세서(116)를 프롬프트하게 함으로써 종래의 마스터/슬레이브 패러다임(106)을 회피한다. 이런 방식으로, 요청 프로세스(124)는 프로세서(116)에 의해 실행될 수 있고 임의의 마스터 장치 프로세스들(108)과 완전히 무관하고 관련되지 않을 수 있다. 슬레이브 장치(104)는 슬레이브 장치 논리 요청(130)과 슬레이브 장치 프로세스(128)를 연관시킬 수 있는 슬레이브 장치 에이전트(126)를 포함할 수 있다. 마스터 장치(102)는 슬레이브 장치 논리 요청(130)에 의해 프로세서(116) 및 슬레이브 장치(104)와 통신하는 마스터 장치 에이전트(132)를 포함할 수 있다. 이런 방식으로, 마스터 장치 에이전트(132)는 요청된 슬레이브 장치 프로세스(124)를 실행하도록 프로세서(116)를 프롬프트하기 위해 슬레이브 장치 논리 요청(130)을 사용할 수 있다. 이런 방식으로, 슬레이브 장치에 의해 생성된 논리 요청은 임의의 마스터 장치 개시 프로세스에 관련되지 않고 무관한 물리적 응답이 제공되면 마스터 장치로 전환될 수 있다.
도 2a는 본 발명의 실시예에 따른 컴퓨팅 시스템(200)을 도시한다. 시스템(200)은 로컬 저장 장치(LSD)(204) 형태를 가질 수 있는 슬레이브 장치(104)를 포함할 수 있다. LSD(204)는 비교적 소형의 팩터를 갖는 메모리 카드 같은 제거 가능한 메모리 장치들의 형태를 가질 수 있고 카메라들, 핸드헬드 또는 노트북 컴퓨터들, 네트워크 카드들, 네트워크 기구들, 셋톱 박스들, 핸드헬드 또는 다른 작은 오디오 플레이어들/레코더들(예를 들어, MP3 장치들), 및 의료 모니터들 같은 전자 제품들용 디지털 데이터를 저장하기 위해 사용될 수 있다. 메모리 카드의 예들은 PC 카드(이전에 PCMCIA 장치), 플래시 카드(예를 들어, 컴팩트 플래시 타입 Ⅰ 및 Ⅱ), 보안 디지털(SD) 카드, 멀티미디어 카드(MMC), ATA 카드(예를 들어, 컴팩트 플래시 카드), 메모리 스틱, 스마트미디어 카드를 포함한다. 게다가, LSD(204)는 캘리포니아주 밀리타스의 샌디스크 코포레이션에 의해 제조된 SD 호환 가능 iNANDTM 내장 플래시 드라이브 같은 비-제거 가능 메모리 장치들 형태를 가질 수 있다.
LSD(204)는 HD/LSD 인터페이스(206)에 의해 호스트 장치(HD)(202) 형태의 마스터 장치(102)와 통신할 수 있다. HD/LSD(206)가 HD(202) 및 LSD(204)가 기계적으로 접속할 수 있는 기계적 엔티티(소켓 또는 상호접속 버스 같은)로서 구성될 수 있다는 것을 주의해야 한다. 몇몇 실시예에서, HD/LSD(206)는 무선 인터페이스 형태를 가질 수 있다. HD(202)는 마스터 장치이고, HD(202)는 프로세서를 포함한다. 그러나, 간략화를 위해, HD(202)에 포함된 프로세서는 이 논의에서 추가로 도시되거나 논의되지 않지만, 존재 되는 것으로 가정된다. LSD(204)는 HD(202)에만 물리적으로 접속될 수 있고 그러므로 HD(202)에 의해 개입 없이 컴퓨터 시스템(200) 외부의 회로들 및/또는 애플리케이션들에 액세스하거나 통신할 수 없다. 통상적으로, LSD(204)는 HD(202)에 의해 제공된 인터페이스 외에 HD(202) 외부의 장치에 대한 임의의 인터페이스를 사용하지 않는다.
HD(202)는 LSD 드라이버(210)와 통신하는 호스트 장치 파일 시스템(HDFS)(208)을 포함한다. 기술된 실시예에서, HDFS(208)는 LSD 관리 명령(212)을 LSD 드라이버(210)에 발행할 수 있다. LSD 드라이버(210)는 차례로 HD/LSD 인터페이스(206)에 의해 LSD 관리 명령(212)(적당하게 포맷된)을 LSD(204)에 전달할 수 있다. 예를 들어, LSD 관리 명령(212)은 이들 경우들에서 블록 명령 형태를 가질 수 있고 여기서 LSD(204)는 논리 블록 어드레스(LBA) 아키텍쳐를 갖는 데이터 저장 어레이를 포함하도록 구성된다. HD(202)는 (내부) 소프트웨어 애플리케이션(214)을 또한 포함할 수 있다. 내부 애플리케이션에 의해 소프트웨어 애플리케이션(214)이 LSD(204)와 통신하도록 HDFS(208) 및 LSD 드라이버(210)를 사용할 수 있다는 것이 의미된다. 상기 소프트웨어 애플리케이션은 그 각각이 통상적으로 호스트 장치 메인 메모리에 잔류하는(하드 디스크 드라이브 형태, 또는 HDD, 및 플래시 메모리 같은 비-휘발성 메모리를 형태를 가질 수 있음) 애플리케이션(218) 및 호스트 장치 운영 시스팀(HDOS)(216)을 포함할 수 있다.
기술된 실시예에서, 소프트웨어 애플리케이션(214)은 LSD(204)와 통신하도록 HDFS(208) 및 LSD 드라이버(210)를 사용하고 그러므로 HDFS(208)에 보여진다. 애플리케이션(214)과 대조하여, 그러나 외부 애플리케이션(220)(이하 타깃 애플리케이션이라 지칭됨)은 LSD(204)와 통신하도록 타깃 애플리케이션(220)과, HDFS(208) 및 LSD 드라이버(210) 사이의 임의의 통신 경로를 사용하지 않고 그러므로 HDFS(208)에 보이지 않는다. 기술된 실시예에서, 타깃 애플리케이션(220)은 임의의 수의 위치들 및 장치에, 로컬적으로 또는 원격으로 자리할 수 있다. 상기 위치들 및 장치들은 예를 들어, HD(202)(로컬 애플리케이션 220-1을 가짐), 또는 HD(202) 및 LSD(204) 외부이지만 여전히 외부 장치(222)(로컬 애플리케이션 220-2를 가짐) 같은 시스템(200) 내의 임의의 장치를 포함할 수 있다. 기술된 실시예에서, 외부 장치(222)는 인터페이스(223)에 의해 HD(202)에 결합된 제 2 LSD(222)의 형태를 가질 수 있다. 게다가, 상기 위치들 및 장치들은 또한 네트워크 인터페이스(230)에서 네트워크 링크(228)에 의해 HD(202)와 통신하는 네트워크(226) 내에 포함된 시스템(200) 외부의 장치(224)(원격 애플리케이션 220-3을 가짐)를 포함할 수 있다. 이런 방식으로, 네트워크 링크(228)를 사용하는 명령 경로는 정보(232)가 전달될 수 있는 외부 장치(224) 및 HD(202) 사이에 설정될 수 있다.
HD(202)는 네트워크 인터페이스(230)에 의해 네트워크(226)와 통신할 수 있다. 기술된 실시예에서 네트워크 인터페이스(230)는 네트워크 링크(228)에 의해 HD(202) 및 네트워크(226) 사이에 통신을 용이하게 한다. 예를 들어, 만약 네트워크(226)가 IP 프로토콜 타입 네트워크이면, 네트워크 인터페이스(230)는 예를 들어, 네트워크(226) 내에 포함된 임의의 네트워크 장치(ND)(224) 및 애플리케이션(218) 사이의 IP 프로토콜 기초 네트워크 링크(228)(URL 같은)를 설정할 수 있다. 네트워크 인터페이스(230)가 적합한 임의의 위치에 물리적으로 배치될 수 있다는 것을 주의해야 한다. 예를 들어, 네트워크 인터페이스(230)는 HD(202)에 통합될 수 있다. 그러나, 네트워크 인터페이스(230)는 HD(202)(또는 시스템 200)에 포함되지 않은 임의의 물리적 위치에 배치될 수 있지만 네트워크(226)와 적합한 네트워크 링크(228)를 설정하기 위하여 HD(202)에 의해 사용될 수 있다. 그러므로 네트워크 인터페이스(230)는 HD(202) 내 또는 근접하여 물리적으로 통합되는 것으로 제한되지 않는다.
마스터 장치 에이전트(132)는 마스터 장치 에이전트(132)에 관련하여 상기된 기능들 외에, LSD(204)에 의해 제공된 저장 서비스들 및 임의의 이용 가능한 외부 자원들 사이의 적어도 브리징(bridging) 기능을 제공하는 호스트 장치 에이전트(234) 형태를 가질 수 있다. 기술된 구현에서, 호스트 장치 에이전트(234)는 임의의 적합한 수단(보다 상세히 하는데 기술되는 폴링(polling) 또는 인터럽트들 같은)에 의해 LSD 논리 요청을 식별하기 위해 사용될 수 있다. 게다가, 호스트 장치 에이전트(234)는 일단 동일한 것에 의해 설정되면 타깃 애플리케이션에/으로부터 통신 경로를 라우팅 및/또는 유지하도록 구성될 수 있다. 게다가, 호스트 장치 에이전트(234)는 임의의 타입의 타깃 애플리케이션을 서비스하기 위하여 공평한 애플리케이션일 수 있다.
LSD(204)는 제 1 저장 어레이(240) 및 제 2 저장 어레이(242)를 갖는 대량 저장 어레이(238) 및 제어기(236)를 포함할 수 있다. 저장 어레이(238)이 메모리 셀들(플래시 같은) 어레이로 형성될 수 있다는 것을 주의해야 한다. 이런 특정 경우, 비록 대량 저장 어레이(238)이 플래시 메모리 셀들의 어레인 것으로 가정될 수 있지만, 본 발명은 본 발명이 임의의 적합한 타입의 메모리 셀이 사용될 수 있다는 것이 생각되기 때문에 플래시 타입 메모리 셀들로만 제한되지 않는다. 제어기(236)는 호스트/LSD 패러다임(106)(즉, HDFS 208의 명령에 동작하는) 내의 제 1 저장 어레이(24)를 관리할 수 있는 파일 관리자(243)를 포함한다. 특히 유용한 어레인지먼트에서, 제 1 저장 영역(240)은 LBA 기초 대량 어레이일 수 있다. 이런 방식으로, 제 1 저장 어레이(240)는 레거시 설치된 베이스와 호환할 수 있다. 따라서, 제 1 저장 영역(240) 내에 저장된 데이터 블록들의 위치는 논리 블록 어드레싱(LBA)을 사용하여 지정될 수 있고, 여기서 각각의 블록은 예를 들어, 각각 512 또는 1024 바이트들 정도일 수 있다. 이런 방식으로, 제 1 저장 영역(240)은 임의의 고안된 레거시 대량 저장 아키텍쳐들(즉, 레거시 호스트들과 관련하여 작동할 수 있음) 및 보다 특히 LBA 타입 시스템들과 완전히 역방향 호환할 수 있다. 특히, LSD(204)(특히, 제 1 저장 영역 240)는 레거시 인터페이스들, 버스들, 및 레거시 제품들의 설치된 베이스와 완전한 호환을 제공하는 모든 연관된 프로토콜들을 사용하여 표준 LBA 아키텍쳐 하에서 동작할 수 있다.
제어기(236)는 또한 인터페이스(246)를 사용하여 제 1 저장 영역(240)과 제 2 저장 영역(242) 사이의 브릿지(하는데 기술됨)로서 작동할 수 있는 LSD 에이전트(244)를 포함할 수 있다. LSD 에이전트(244)는 또한 LSD 인터페이스(252)에 의해 표준 프로토콜들(인터넷 프로토콜, 또는 IP) 및 임의의 이용 가능한 네트워크 자원들을 사용하여 외부 장치들 및/또는 타깃 애플리케이션들과 통신하도록 내부 LSD 애플리케이션들(250)에 메커니즘을 제공하는 네트워크 스택/인터페이스(248)를 관리할 수 있다. 특히, LSD(204)는 호스트 장치 에이전트(234)가 HD/LSD 인터페이스(206)의 LBA 기초 구현에 적합한 방식으로 명령들(메시지 페치 같은)을 실행하게 하도록 임의의 네트워크 통신(LSD 논리 요청 130 같은)을 표준 포맷(물리적 버스 기초 포맷 같은)으로 번역할 수 있다. 이런 방식으로, 임의의 페치된 메시지는 예를 들어, 호스트 장치 에이전트(234) 및 원격 애플리케이션(220-3) 사이에 생성된 네트워크 링크(228)(또는 로컬 애플리케이션들 220-1 또는 220-2 및 LSD 204 사이의 로컬 통신 경로)를 통하여 성공적으로 전달될 수 있다. 이와 관련하여, 네트워크 스택/인터페이스(248)는 LSD 에이전트(244)의 일부인 것으로 고려될 수 있다. LSD 에이전트(244)는 또한 인증 및 보안 서비스를 LSD 애플리케이션(250)에 제공하고 임의의 그 다음 서비스 요청을 관리할 수 있다.
제 1 저장 영역(240) 또는 제 2 저장 영역(242)(또는 양쪽)은 별개의 내부 영역들로 분할될 수 있다. 이들 분할된 영역들은 각각 그들이 임의의 적합한 방식으로 LSD(204) 외부에서 서로 및/또는 회로들 및/또는 소프트웨어 애플리케이션들과 상호작용하도록 작동될 수 있다. 상기 외부 회로는 예를 들어, HD(202)(호스트 파일 시스템 208 같은 모든 컴포넌트들 포함), LSD(222), 또는 ND(224) 같은 네트워크(226)에 포함된 임의의 복수의 외부 장치를 포함할 수 있다.
제 2 저장 영역(242)은 영역(254)을 포함하도록 분할될 수 있다. 기술된 실시예에서, 영역(254)은 HDFS(208)에 "보이지 않도록" 구성될 수 있고 이와 같이 숨은 저장 영역(CSA)(254)으로서 표시될 수 있다. 이런 방식으로, CSA(254)의 임의의 데이터 콘텐트 또는 데이터 콘텐트에 대한 변화들은 HDFS(208)(만약 통지되지 않으면)에 의해 검출될 수 없다. 그러나, HDFS(208)은 임의의 상기 데이터 콘텐트 또는 데이터 콘텐트 변화들을 통지받을 수 있다. 예를 들어, 하는데 보다 상세히 기술된 바와 같이, HDFS(208)와 통신하지 않는 임의의 회로 또는 소프트웨어 애플리케이션(ND 224에 잔류하는 원격 애플리케이션 220-3, HD(202)의 로컬 애플리케이션 220-1, 및 LSD 222 내의 로컬 애플리케이션 220-2 같은)은 HDFS(208)에 의하여 보이지 않고 그 자체 및 CSA(254) 사이에 통신 경로(256)를 설정하도록 HD(202)를 프롬프트할 수 있다. 반대로, LSD(204)는 LSD(204) 및 임의의 설계된 애플리케이션(220) 사이에 통신 경로(256)를 설정하도록 HD(202)를 프롬프트할 수 있다. 그러나, 일단 설정되면, 정보(정보 232, 정보 258, 및 정보 260)는 HD(202)에 의한 추가 개입 없이(데이터 패킷 라우팅 같은 데이터의 전달에 관련된 임의의 개입을 제외하고) 전달될 수 있고 또한 HDFS(208)에 보이지 않는다. 그러나, 몇몇 경우들에서, CSA(254)는 임의의 HDFS(208)에게 이런 변화들의 통지를 제공할 수 있다.
제 1 저장 영역(240)은 영역(260)을 포함하도록 분할될 수 있다. 기술된 실시예에서, 영역(260)은 통신이 HDFS(208)에 의해 중재되는 한(예를 들어, 몇몇 실시예에서 상기 몇몇 상세히 기술된 바와 같은 LBA 기초 명령들을 사용함) HDFS(208) 또는 임의의 다른 적합한 외부 회로에 완전히 액세스할 수 있다. 그러므로, 영역(260)은 호스트 장치 파일 시스템(208)이 HSA(260)를 관리하는 사실을 유지할 때 호스트 저장 영역(HSA)(260)으로서 설계될 수 있다. 본 발명의 한 가지 양상에서, CSA(254) 및 HSA(260)는 HDFS(208)와 무관한 인터페이스(246)에 의해 서로 통신할 수 있다. 기술된 실시예에서, LSD 에이전트(244)의 일부로서, 인터페이스(246)는 제 1 저장 영역(240) 및 제 2 저장 영역(242)을 브릿지할 수 있다. LSD 에이전트(244)는 예를 들어, HDFS(208)에 의해 관리되는 파일 할당 테이블(FAT)을 판독할 수 있는 내부 파일 관리 시스템(예를 들어, LSD FS)을 포함할 수 있다. LSD 에이전트(244)는 또한 예를 들어, 더미 콘텐트를 갖는 플레이서홀더(placeholder) 파일을 사용하여 CSA(254)에 기입할 수 있고 CSA(254)로부터 HAS(260)로 기입할 수 있다. 이런 방식으로, CSA(254) 및 HSA(26)는 HDFS(208)에 의해 볼 수 없는 통신 경로(262)를 통하여 서로 통신할 수 있다. 몇몇 경우들에서, CSA(254) 및/또는 HSA(260) 모두(또는 단지 일부들)는 각각 보호된 부분들(264 및 266)로서 설계될 수 있다. 보호된은 HDFS(208)가 인증되지 않으면 이들 보호된 영역들에 액세스할 수 없다는 것을 의미한다. 이런 인증은 예를 들어, 인증 서버 같은 컴퓨팅 시스템(200) 외부 장치에 의해 제공될 수 있다. 상기된 바와 같이, LSD(204)는 LSD(204)의 이익을 위해 요청 프로세스(124)를 실행하도록 HD(202)를 프롬프트할 수 있다. 호스트 명령(예를 들어, 판독/기입)이 LSD 논리 요청(130)의 생성을 트리거하는 경우에서도, LSD 논리 요청(130)이 호스트 명령을 서비스하지 않는 것을 주의해야 한다.
이런 방식으로, 요청 프로세스(124)는 전체적으로 임의의 호스트 장치 프로세스들(108)과 완전히 무관하고 관련되지 않을 수 있다. 특히, LSD(204)는 HDFS(208)에 전체적으로 보이지 않고 로컬 애플리케이션들(220-1 및/또는 220-2)에 네트워크 링크(228)를 설정하고 및/또는 통신 경로(256)를 설정하도록 HD(202)를 프롬프트할 수 있다. 그러나, 일단 요청 프로세스(124)가 실행되면(즉, 예를 들어, 적합한 통신 경로가 설정됨), HD(202)에 의한 임의의 추가 개입은 필요하지 않다(임의의 라우팅 또는 다른 하우스키핑 기능들을 제외하고). HD(202)는 복수의 방식으로 LSD 논리 요청(130)을 실행하도록 LSD(204)에 의해 프롬프트될 수 있다.
어떤 경우에는 LSD(204)가 요청 프로세스를 실행하도록 HD(202)를 간접적으로 프롬프트하는 것은 바람직할 수 있다. 간접적은 LSD(204)가 요청 프로세스를 실행하도록 HD(202)를 프롬프트하기 위해 HD 에이전트(234)로부터 별개 그리고 구별되는 중개자 에이전트를 사용하는 것을 의미한다. 요청 프로세스의 간접 프롬프팅은 도 2b의 컴퓨팅 시스템(270)을 참조하여 도시될 수 있다. 도시된 바와 같이, LSD(204) 내 에이전트(244)는 LSD 논리 요청(130)을 사용하여 에이전트(244) 및 타깃 애플리케이션(274)(또한 런칭 애플리케이션이라 지칭됨) 사이에 통신 경로(272)를 설정하도록 HD(202)를 프롬프트할 수 있다. 런칭 애플리케이션(274)이 로컬적으로 또는 원격으로 배치될 수 있다는 것을 주의해야 한다. 예를 들어, 에이전트(244)는 LSD(204) 내에 잔류할 수 있고 런칭 애플리케이션(274)은 ND(224) 내에 잔류할 수 있고, 상기 경우 HD(202)는 통신 경로(272)(즉, 네트워크 링크 228과 유사함)를 설정하기 위하여 네트워크 인터페이스(230)를 사용한다. 대안적으로, 런칭 에이전트(274)는 외부 장치(222) 또는 HD(202) 내에 잔류하고 상기 경우 통신 경로(272)는 로컬 통신 경로(256)와 유사하다.
어느 경우에나, 일단 통신 경로(272)가 설정되면, 에이전트(244)는 HD(202)에 의한 추가 개입없이 통신 경로(272)를 통해(통신 경로 272를 유지하는 것은 제외) 런칭 애플리케이션(274)과 논리적으로 상호작용할 수 있다. 이런 논리 상호작용의 일부로서, 에이전트(244)는 트리거링 명령(276)을 런칭 애플리케이션(274)에 전달할 수 있다. 런칭 애플리케이션(274)은 명령(280)을 전송함으로써 요청 프로세스(278)를 실행하도록 HD(202)를 프롬프팅함으로써 트리거링 명령(276)에 응답할 수 있다. HD(202)는 요청 프로세스(278)를 실행할 수 있다. 요청 프로세스(278)는 에이전트(244)로 다시 지향될 수 있다. 이런 방식으로, 에이전트(244) 및 요청 프로세스(278)는 논리적으로 상호작용할 수 있다.
본 발명의 이런 측면의 특히 유용한 실시예는 LSD(204)가 사용자와 논리적으로 상호작용하게 하는 상황들에서 구현된다. 이 실시예의 특정 구현은 도 2c에 도시되고, 여기서 런칭 애플리케이션(274)은 외부 장치(222)(그러나, 상기된 바와 같이 런칭 애플리케이션 274이 원격에 또는 로컬에 잔류할 수 있다는 것을 주의해야 함)에 잔류할 수 있다. 이 실시예에서, 외부 장치(222)는 가입자 식별 모듈(SIM) 카드(222) 형태를 가질 수 있다. 종래에 잘 공지된 바와 같이, SIM 카드(222)는 모바일 컴퓨터들 및 모바일 폰들 같은 모바일 휴대 전화 장치에 사용될 수 있다. SIM 카드는 가입자를 식별하기 위하여 사용된 서비스 가입자 키(IMSI)를 안전하게 저장할 수 있다. 게다가, SIM 카드는 하나의 모바일 폰으로부터 SIM 카드를 간단히 제거하고 이를 다른 모바일 폰 또는 광대역 전화 장치에 삽입함으로써 가입을 보전하면서 사용자가 폰들(또는 다른 광대역 통신 장치)을 변경하게 한다. 이런 실시예에서, SIM 카드(222)는 SIM 카드(222)가 HD(202)(예를 들어, 셀 폰 형태를 가질 수 있음) 상 프로세스를 미리 동작시키게 하는 명령의 SIM 애플리케이션 툴키트(STK) 세트로 순응시킨다. 명령의 STK 세트는 SIM 카드가 외부 세상과 직접 상호작용하고 핸드세트 및 네트워크와 무관하게 명령들을 개시하는 방법을 정의하는 SIM 카드에 프로그램된 명령들을 포함한다. 이것은 SIM 카드가 네트워크 애플리케이션 및 최종 사용자 사이의 상호작용 교환을 설정하고 네트워크에 액세스 또는 제어 액세스하게 한다. SIM 카드는 또한 디스플레이 메뉴 같은 핸드세트에 명령들을 제공하고 사용자 입력을 요구한다.
따라서, LSD(102)가 직접적인 통신 경로를 설정하도록 사용할 수 있고 그러므로 최종 사용자와 상호작용하는 하나의 접근법은 다음과 같이 구현될 수 있다. 에이전트(244)는 런칭 애플리케이션(274)을 사용하여 HD(202) 상에서 요청 프로세스를 실행하도록 HD(202)를 미리 작동하게 프롬프트하기 위하여 배열된 SIM 카드(222)에 통신 경로(272)를 설정하도록 HD(202)를 프롬프트한다. ISO 인터페이스-기초 SIM 카드에서, 통신 경로(272)가 SIM-측 상 BIP(베어러 독립 프로토콜)를 사용하여 설정될 수 있다는 것을 주의해야 한다. 그러나, USB 인터페이스-기초 SIM 카드에서, 통신 경로(272)는 SIM-측 상 이더넷 이뮬레이션(EEM)을 사용하여 설정될 수 있다.
이 경우, SIM 카드(222)는 STK 순응 SIM 카드(222)일 수 있다. 그러나, 하기 주의된 바와 같이, 본 발명은 특정 통신 기술 또는 네트워크 타입으로 제한되지 않는다. 임의의 경우, 에이전트(244)는 예를 들어, 브라우저 애플리케이션(278) 형태를 가질 수 있는 요청 프로세스(278)를 실행하도록 HD(202)를 프롬프트하기 위해 STK 순응 SIM 카드(222)(런칭 애플리케이션 274를 사용하여)를 트리거할 수 있다. 기술된 실시예에서, 브라우저 애플리케이션(278)은 에이전트(244)(및 LSD 204)로 지향한다. 브라우저 애플리케이션(278)은 예를 들어, 사용자 인터페이스(UI)(280)가 디스플레이 유니트(282) 상에 디스플레이되게 할 수 있다. UI(280)는 아이콘(286)에서 사용자 입력(284)을 수신할 수 있다. 이런 방식으로, UI(280) 및 에이전트(244)는 논리적으로 상호작용하여 LSD(204)를 UI(280) 및 사용자 입력(284)을 제공하는 사용자에 직접적인 액세스를 제공한다. 몇몇 경우들에서, SIM(222)이 브라우저(278) 및 LSD(204) 사이 중개자로서 동작하는 것은 필요할 수 있다. 임의의 경우, LSD(204) 및 UI(289)는 HD(202)에 의해 개입없이 논리적으로 상호작용할 수 있다(HD 202가 브라우저 278을 실행하고 여러 통신 경로들을 유지하는 것과 관련하여 적합한 하우스키핑 듀티(duty)를 제공하는 것을 제외하고).
예를 들어, UI(280)는 사용자 입력(284)을 수신할 수 있다. 사용자 입력(284)은 예를 들어, 브라우저 애플리케이션(278)에 의해 사용자 선택 이벤트(288)로서 프로세싱될 수 있다. 브라우저 애플리케이션(278)이 에이전트(244)에 지향할 수 있기 때문에, 에지전트(244)는 브라우저 애플리케이션(278) 및 에이전트(244) 사이의 논리 상호작용의 일부로서 HD(202)에 의한 개입없이 사용자 선택 이벤트(288)를 수신한다(HD 202가 여러 통신 경로들을 유지하고 브라우저 애플리케이션 278을 실행하는 것을 제외하고). 많은 동일한 방식으로, 에이전트(244)는 논리 상호작용에 의해 UI(280) 또는 디스플레이 유니트(282)를 사용하여 사용자에게 정보를 전달할 수 있다. 상기 정보는 예를 들어, LSD(204)의 현재 상태, 선택된 저장된 콘텐트의 리스팅들 등등을 포함할 수 있다.
네트워크와 해당 기술에 따라, SIM 카드가 임의의 복수의 방식으로 지칭될 수 있다는 것을 주의해야 한다. 예를 들어, 3G 타입 네트워크에서, SIM 카드는 USIM 카드로서 지칭된다. 그러므로, USIM 애플리케이션 툴키트, 또는 USAT가 참조된다. 임의의 경우, 본 발명은 임의의 네트워크 및 대응 기술(STK, USAT 등)에 사용될 수 있다.
도 3a는 본 발명의 실시예에 따른 폴링 스킴(300)을 도시한다. HD(202)는 폴링 신호(PS)(302)를 LSD 에이전트(244)에 의해 인터셉트된 LSD(204)에 전송함으로써 LSD(204)를 폴링할 수 있다. 기술된 실시예에서, LSD 에이전트(244)는 LSD 논리 요청(130)을 생성함으로써 PS(302)에 응답하는 논리 요청 생성기(304)를 포함할 수 있다. 논리 요청 생성기(304)는 호스트 장치 에이전트(234)에 다시 LSD 논리 요청을 순차적으로 포워딩한다. 기술된 폴링 프로세스가 LSD(204)로부터 특정 응답에 대해 HD(202)의 필요 또는 기대를 조건으로 하지 않는다는 것을 주의해야 한다. 이런 방식으로, LSD(204)는 LSD 논리 요청(130)으로 폴링 신호(302)에 간단히 응답함으로써 요청 프로세스(124)를 실행하도록 언제나 HD(204)를 프롬프트할 수 있다. 기술된 실시예에서, LSD 논리 요청(130)은 LSD 요청 프로세스(124)를 실행하는 HD(202)를 프롬프트할 수 있는 명령 정보를 포함한다. 명령 정보가 HD(202)에 의해 완성될 특정 동작(명령 경로 256를 설정하는 것과 같은)을 가리키는 명령 코드 같은 데이터를 포함할 수 있다는 것을 주의해야 한다.
명령 정보는 또한 타깃 장치 식별부(ID), 타깃 장치 위치(예를 들어, IP 어드레스) 등 같은 장치 정보를 포함할 수 있다. 그러나, 몇몇 경우들에서, LSD(204)나 HD(202) 어느 것도 요청된 임무를 완료하기 위한 가까운 장래에 충분한 정보를 가지지 않는다. 예를 들어, LSD(204)는 특정 정보를 가리키는 명령 정보를 제공할 수 있지만 특정 타깃 장치 ID 또는 타깃 장치 위치를 결핍시킬 수 있다. 이들 상황들에서, 예를 들어, 손실되는 아직 필요한 정보를 얻기 위하여 네트워크 링크(238)에 의해 LSD(204)에 의해 질문이 될 수 있는 발견 서버 컴퓨터를 사용하는 것은 가능하다. 예를 들어, LSD(204)는 LSD 논리 요청(130)으로 언제나 PS(302)에 간단히 응답함으로써 타깃 저장 장치상 저장 동작을 개시할 수 있다. LSD 논리 요청(130)은 LSD(204) 및 타깃 저장 장치 사이의 명령 경로를 설정하기 위하여 HD(202)에 대한 명령들을 갖는 명령을 포함할 수 있다. HD(202)가 적합한 명령 경로를 설정할 수 있는 한 타깃 저장 장치가 임의의 위치에 있을 수 있다는 것을 주의해야 한다. 예를 들어, 만약 타깃 저장 장치가 네트워크(226) 내에서 ND(224)이면, HD(202)는 네트워크 인터페이스(230) 및 ND(224) 사이에 네트워크 링크(228)를 설정함으로써 LSD 논리 요청(130)에 응답할 수 있다.
LSD(204)가 요청 프로세스(124)를 실행하도록 HD(202)를 프롬프트할 수 있는 다른 메커니즘은 도 3b에 도시된 LSD 생성 인터럽트 측면에서 기술된다. LSD(204)는 LSD 생성 인터럽트(404)와 LSD 논리 요청 생성기(304)로부터 수신된 LSD 논리 요청(130)을 연관시키기 위하여 LSD 인터럽트 연관기(402)를 사용하여 요청 프로세스(124)를 실행하도록 HD(202)를 프롬프트할 수 있다. 일단 LSD 논리 요청(130)이 LSD 인터럽트(404)와 연관되었다면, LSD(204)는 HD(202)의 의도에 대한 인터럽트(404)를 제기한다. HD(202)는 요청 프로세스(124)를 실행함으로써 LSD 인터럽트(404)와 연관된 논리 요청(130)에 응답한다.
LSD(204)는 또한 제 2 LSD(222) 같은 다른 로컬 저장 정치(들)와 통신을 설정하기 위해 HD(202)에게 지시할 수 있다. 예를 들어, 컴퓨팅 시스템(200)은 예를 들어, 제 2 LSD(222) 및 LSD(204) 사이의 미디어 파일들을 동기화하기 위하여 퍼스널 컴퓨터에 결합될 수 있는 휴대용 미디어 플레이어(상기 경우 LSD 204는 MP3 형태의 오디오 파일들 같은 여러 디지털 미디어 파일들을 저장함)일 수 있다. 이 실시예에서, LSD(204)는 적합한 동기화 동작을 개시하여, LSD(222) 및 LSD(204) 사이의 데이터 콘텐트는 비교되고 HDFS(208)에 보이지 않게 업데이트된다.
다른 예에서, LSD(204)는 임의의 수의 동작을 수행하고, 결과를 생성하고 그 결과를 바탕으로 연관된 논리 요청을 생성할 수 있다. 논리 요청은 적합한 LSD 프로세스를 실행하도록 HD(204)를 프롬프트하기 위해 LSD(204)에 의해 사용될 수 있다. 예를 들어, LSD(204)는 LSD 파라미터들의 동작 세트의 검출을 수행할 수 있다. 기술된 실시예에서, 검출된 LSD 파라미터들의 세트는 데이터 콘텐트 백업 파라미터, 데이터 콘텐트 파라미터(파일 크기, 파일 타입, 파일 이름, 및 파일 키워드 같은), 논리 저장 파라미터(적당하다면 남은 용량, 및 LSD IP 어드레스 같은), 물리적 저장 파라미터(착용 레벨, 복수의 배드(bad) 블록들, 복수의 비트 플립(flip)들), 룰들 파라미터의 위반, 및 호스트 장치 IP 어드레스를 포함할 수 있다. 일단 LSD(204)가 검출 동작을 완료하면, 검출 동작 결과는 생성된다. 몇몇 경우들에서, 생성된 결과는 검출된 파라미터들이 LSD의 동작을 관장하는 룰들의 세트 내에 속하는 NULL 결과이다. 그러나, 다른 경우들에서, 생성된 결과는 타깃 애플리케이션으로의 통신 경로를 설정하기 위하여 HD(202)를 프롬프트할 수 있는 검출 논리 요청(130)으로서 LSD 논리 요청(130)과 연관될 수 있다. 상기 타깃 애플리케이션은 로컬 애플리케이션들(220-1, 220-2) 또는 원격 애플리케이션(220-3)을 포함할 수 있다. 로컬 애플리케이션들(220-1 및 220-2)의 경우, 통신 경로가 로컬 통신 경로로 지칭되는 것을 주의해야 한다. 일단 상기 통신 경로가 설정되었다면, LSD(204) 및 타깃 애플리케이션(220)은 요청된 검출 프로세스를 수행하기 위하여 논리적으로 상호작용할 수 있다. 일단 통신 경로가 설정되었다면, HD(202)에 의한 추가 개입은 통신 경로 및 임의의 다른 하우스키핑 듀티들을 유지하는 것을 제외하고 요청되지 않는다. 요청된 검출 프로세스는 콘텐트 백업 프로세스, 콘텐트 공유 프로세스, 이벤트 통지 프로세스, 원격 명령 프로세스에 대한 요청, 사용/액세스 권리 프로세스에 대한 요청, 원격 서버 프로세스에 대한 등록을 포함할 수 있다.
일 실시예에서, LSD(204)는 호스트 장치에 의한 폴링과 검출 논리 요청을 연관시킨다. 그러나, 다른 실시예에서, LSD(204)는 LSD 인터럽트와 검출 논리 요청을 연관시키고 HD(202)의 의도에 대한 LSD 인터럽트를 제기한다. 어느 경우나, HD(202)는 적합한 요청된 검출 프로세스를 실행하도록 프롬프트될 수 있다.
LSD(204) 외측의 임의의 회로 또는 소프트웨어 애플리케이션 및/또는 시스템(200)이 요청 장치 및 타깃 장치, LSD(204) 사이에 통신 경로를 설정하기 위한 메커니즘으로서 HD(204)를 사용하는 LSD(204)를 목표로 할 수 있다는 점에서 본 발명이 필수적으로 대칭적인 것을 주의해야 한다. 이런 방식으로, LSD(204)는 외부 회로들 또는 외부 소프트웨어 애플리케이션들로부터 발생하는 요청들(현재 상태 정보, 현재 용량 등을 제공하는 것과 같은)에 응답할 수 있다. 예를 들어, 도 4는 하나의 상황을 도시하고 이에 따라 원격 애플리케이션(220-3)은 HDFS(208)와 무관한 임의의 수의 저장 동작을 수행하기 위하여 제 1 저장 영역(240)을 강요한다. 예를 들어, 외부 애플리케이션(220-3)은 보여지고 그러므로 호스트 장치 파일 시스템(HDFS)(208)에 의해 관리할 수 있는 미리 설정된 프록시 파일(450)(또한 플레이스홀더 파일이라 지칭됨)에 데이터를 기입함으로써 저장 영역(240)에 데이터를 기입할 수 있다. 그러나, 플레이스홀더 파일(450)에 포함된 임의의 데이터 콘텐트는 플레이스홀더 파일(450)이 메커니즘의 단순히 일부이고 이에 따라 원격 애플리케이션(220-3)이 HDFS(208)(통지되지 않으면)에 의해 "보여" 지지 않고 프록시 파일 내에 데이터를 액세스/변경할 수 있다는 점에서 "더미" 데이터라 고려될 수 있다.
예를 들어, 외부 애플리케이션(220-3)은 플레이스홀더 파일(450)에 기입될 데이터(454)를 포워딩함으로써 HDFS(208)의 개입없이 플레이스홀더 파일(450)에 데이터(454)를 기입할 수 있다. 일 구현에서, 데이터(454)는 플레이스홀더 파일(450)에 직접 전송될 수 있거나 데이터(454)의 선택된 부분들을 버퍼하기 위한 캐시로서 CSA(254)를 사용할 수 있다. CSA(254)가 데이터(454)를 캐시하기 위하여 사용될 때, 데이터(454)는 HD(202)에 의한 개입 없이(설정한 통신 경로 256을 제외하고) 통신 경로(256)에 의해 플레이스홀더 파일(450)에 전달된다. 이런 방식으로, 원격 애플리케이션(220-3)(또는 그 문제에 대한 임의의 외부 애플리케이션 220)은 HDFS(208)에 의한 개입 없이 플레이스홀더 파일(450)에 데이터를 기입하거나 플레이스홀더 파일(450)로부터 데이터(454)를 스트림할 수 있다.
예를 들어, LSD(204)는 제 1 저장 어레이(240)의 이용 가능한 저장 용량이 미리 결정된 양보다 작은 것을 결정하는 검출 동작을 수행할 수 있다. 그 결과를 바탕으로, 논리 요청 생성기(340)는 LSD(204) 및 원격 애플리케이션(220-3) 사이에 통신 경로(228)를 설정하기 위해 HD(202)를 프롬프트하는 LSD 검출 논리 요청(130)을 생성할 수 있다. 일단 통신 경로(228)가 설정되었다면, HD(202)는 HD(202)가 예를 들어, 모뎀, 라우터, 또는 데이터 패킷들을 라우팅하기 위하여 사용된 다른 장치에 상응하는 역할을 가정하기 때문에 개입하지 않을 수 있다. 일단 원격 애플리케이션(220-3) 및 LSD(204)가 통신 경로(228)에 의해 링크되면, LSD(204) 및 원격 애플리케이션(220-3)은 통신 경로(228)를 통하여 논리적으로 상호작용할 수 있다. 예를 들어, LSD(204)는 검출 동작의 결과들을 원격 애플리케이션(220-3)에 포워딩할 수 있다. 원격 애플리케이션(220-3)은 (기입) 데이터(454)(사용자 통지, 광고 등의 형태로)를 플레이스홀더 파일(452)에 푸시함으로써 응답할 수 있다. 일단 데이터(454)가 플레이스홀더 파일(452)에 저장되면, 데이터(454)는 HDFS(208)에 보여지고 임의의 수의 방식으로 HD(202)에 의해 프로세싱될 수 있다. 예를 들어, 데이터(454)는 부가적인 저장 용량이 요구되고 심지어 구입하기 위한 제품 및 구입 장소 및 가격을 제안하는 통지를 디스플레이하기 위하여 HD(204)에 의해 사용될 수 있다.
도 5a는 본 발명의 실시예에 따른 네트워크(500)의 보다 상세한 도면을 도시한다. 특히, 네트워크(500)는 도 3에 도시된 네트워크(226)의 일 실시예이다. 특히, 네트워크(500)는 분산된 명령 경로들에 의해 컴퓨팅 시스템(200)에 결합된 서버 컴퓨터(502)를 포함하는 것으로 도시된다. 상기 분산된 명령 경로들은 무선 통신들(WiFi, 불루투스 등) 및 유선 통신들 등등을 포함할 수 있다. 기술된 실시예에서, 서버 컴퓨터(502)는 예를 들어, 표준 웹 기술, 예를 들어, 개발자들 및 다른 사용자들에 대한 HTTP/SOAT-기반 웹 서비스를 사용하여 몇몇 명확하고 잘 정의된 인터페이스를 부분적으로 제공하는 서버 컴포넌트(504)를 포함한다. 기술된 실시예에서, 예를 들어, 원격 애플리케이션 및 LSD(204) 사이에 보안 채널이 요청될 때마다 서버 컴포넌트(504)는 적어도 인증 및 인증 서비스를 제공할 수 있다. 이런 방식으로, 가능한 네트워크-기원 공격들, 스파이웨어들, 멀웨어(malware)들 등에 대한 안전한 보호가 제공될 수 있다. 게다가, 최종 사용자 콘텐트 사용이 제 3 파티에 의해 인증됨으로써 트랙킹될 수 없는 것을 보장하기 위해, 프라이버시 보호, 몇몇 압축 기술들을 사용하여 저장 장치와 최적화된 통신 프로토콜 및 서버 컴퓨터는 또한 브로드캐스트 및/또는 멀티캐스트 능력들을 포함할 수 있다. 장치 등록 모듈(506) 및/또는 발견 서비스들 모듈(508)은 서버 컴퓨터(502)에 포함되거나 결합될 수 있다.
장치 등록 모듈(506) 및 발견 서비스 모듈(508)은 각각 등록 서비스 및 발견 서비스를 제공한다. 등록 서비스는 장치 등록 모듈(506)에 등록된 네트워크(226)에 포함되거나, 부가되거나, 제거되는 임의의 장치가 대응 장치의 현재 상태와 일치하여 업데이트된 연관된 등록 데이터를 가진다는 것을 의미한다. 상기 등록 데이터는 장치 타입, 장치 위치(만약 네트워크가 IP 프로토콜 기반 네트워크이면 IP 어드레스) 등을 포함할 수 있다.
일 실시예에서, 장치(또는 소프트웨어 애플리케이션)와 연관된 등록 데이터는 복수의 다른 방식으로 등록 모듈(506)에 의해 업데이트될 수 있다. 하나의 접근법은 장치 상태가 변경되었다(즉, 장치가 부가되거나, 제거되거나, 네트워크 226 내의 위치를 변경하였다 등등)을 통지받은 등록 모듈(506)에 의존한다. 본 발명의 몇몇 측면들에서, 프로세싱 자원들 및 네트워크 대역폭을 보전하기 위하여, 모든 변화들이 등록 모듈(506)에 통지하는데 충분한 관심이 있는 것으로 고려되지 않는다. 그러나, 장치 상태 변경이 발생하고 통지가 보장된 상황들에서 등록 모듈(506)은 네트워크(226)에 포함된 모든 장치를 연속으로 핑잉(pinging)하고 각각의 장치가 현재 상태 정보를 리턴하는 것을 요청하는 등록 모듈(506)에 의해 상태 변화를 통지받는다. 이전 장치 상태에 관하여 변경되고 통지 가능한 상태 변화를 보이는 것으로 결정하는 임의의 상태 정보는 장치 등록 모듈(506)에서 통지 이벤트를 유발할 것이다.
통지 이벤트에 응답하여 등록 모듈(506)은 변경된 상태를 갖는 장치가 등록 모듈(506)에 현재 장치 상태 정보를 포워딩하는 것을 요청할 수 있다. 일단 등록 모듈(506)에 의해 수신되면, 장치와 연관된 상태 정보는 등록 모듈(506)에서 업데이트될 수 있고 발견 서버(508)에 포워딩될 수 있다. 다른 접근법은 상태 변화가 발생할 때마다 각각의 장치가 그의 특정 현재 상태를 장치 등록 모듈(506)에 포워딩할 수 있는 보다 수동적인 접근법을 취하는 장치 등록 모듈(506)을 가질 수 있다. 다시, 컴퓨팅 자원들 및 네트워크 대역폭을 보전하기 위하여 본 발명의 몇몇 측면들은 모든 상태 변화들이 아닌 임의의 특정 상태 변화들을 리포팅하기 위해서만 제공한다.
임의의 경우, 일단 현재 상태 정보가 수신되고 적당하게 프로세싱되면 등록 모듈(506)은 요청 장치들 및/또는 소프트웨어 애플리케이션에 차후 발견 서비스를 제공하기 위하여 저장될 수 있는 현재 상태 정보를 발견 서비스 모듈(508)에 포워딩할 수 있다. 상기 정보는 예를 들어, 요청 장치(있다면, 소프트웨어 애플리케이션들 포함) 및 타깃 장치 또는 타깃 애플리케이션들 사이의 명령 경로를 설정하는 것을 용이하게 하기 위하여 네트워크(324)에 포함된 임의의 장치에 관련된 임의의 정보를 포함할 수 있다.
도 5a를 참조하여, 만약 LSD(222)가 HD(204)와 미리 결합되는 것이 아니고 몇몇 포인트에서 LSD(222)가 LSD(204)를 인터페이스(223)에 삽입함으로써(예를 들어, 휴대용 컴퓨터에 보안 디지털(SD) 카드 삽입, 네트워크와 통신하는 디지털 카메라 등) HD(204)에 결합되면, LSD(222)는 본 발명의 일측면에서, 결합된 네트워크(226)인 것을 장치 등록 서비스(506)에게 통지할 수 있다. 그러나, 본 발명의 다른 양상에서, 장치 등록 서비스(506)는 LSD(222)가 예를 들어, 컴퓨팅 시스템(200)을 핑잉하고 통지 가능한 변화가 발생된 것을 결정함으로써 네트워크(226)에 진입되는 것을 능동적으로 결정할 수 있다.
LSD(222)가 상태 변경(이 경우 LSD 222가 네트워크 226에 부가됨)을 장치 등록 서비스(506)에 통지하는 경우에서, LSD(222)는 HD(202)로부터 네트워크(226)로의 네트워크 링크(228)를 포함하는 LSD(222) 및 장치 등록 서비스(506) 사이의 명령 경로 및 상기된 적어도 하나의 메커니즘들을 사용하여 네트워크(226)로부터 등록 서비스(506)로 명령 경로(510)를 설정하기 위하여 HD(202)에게 요청할 수 있다. 만약 LSD(204)가 장치 등록 서비스(506)의 위치를 알지 못하면, HD(202)는 디폴트 위치로서 위치를 제공하거나 네트워크 서비스는 미리 정의된 위치로 상태 변화들을 자동으로 지향시킨다.
일단 LSD(204)와 등록 서비스 사이에 통신이 설정되면, 장치 등록 서비스(506)는 LSD(222)의 현재 상태(LSD 222의 현재 상태는 LSD 222에 의해 푸시되거나 등록 서버 506에 의해 풀링됨)를 업데이트(수동으로 또는 능동으로) 업데이트할 수 있다. 일단 업데이트되면, 장치 등록 서비스(506)는 LSD(222)의 현재 상태를 발견 서비스 모듈(508)에 포워딩할 수 있고, 여기서 원격 장치가 LSD(222)를 목표로 할 때마다 추후 검색을 위해 저장된다. 등록 정보가 장치에 관련된 임의의 관련 정보를 포함할 수 있다는 것을 주의해야 한다. 상기 관련 정보(데이터 저장 장치의 경우)는 장치의 보다 많은 고정된 특성인 논리 저장 장치 파라미터들(나머지 이용 가능한 저장 용량, 장치 IP 어드레스, 장치상 이용 가능한 저장 애플리케이션들, 펌웨어 버젼 및 특성들 등)을 포함할 수 있다. 상기 정보는 또한 현재 이용 가능한 데이터 저장 용량, 저장된 데이터의 품질, 장치의 위치 등 및 파일 크기, 파일 타입, 파일 이름, 및 파일 키워드를 포함할 수 있는 데이터 콘텐트 파라미터들 같은 보다 많은 일시적 정보를 포함할 수 있다.
일단 발견 서비스(508)가 업데이트되면, 발견 서비스(508)는 그 내부에 저장된 데이터를 갖는 임의의 타깃 장치(또는 타깃 소프트웨어 애플리케이션)에 관한 요청된 발견 정보를 임의의 요청 장치(또는 소프트웨어 애플리케이션)에 제공할 수 있다. 예를 들어, 원격 저장 장치(514)와 결합된 원격 호스트 장치(512)를 갖는 원격 컴퓨팅 장치(510)는 원격 컴퓨팅 장치(510) 및 LSD(204) 사이의 명령 경로를 우선 설정함으로써 발견 서비스(508)를 사용하여 LSD(204) 같은 타깃 장치상 저장 동작을 원격으로 호출할 수 있다. 명령 경로는 타깃 장치 LSD(204)에 대한 발견 정보를 요청하는 발견 요청(516)을 발견 서비스(508)에 전송하는 원격 컴퓨팅 장치(510)에 의해 설정될 수 있다. 상기 발견 정보는 타깃 장치 위치 정보, 타깃 장치 현재 동작 상태 정보, 타깃 장치 현재 파라미터 정보 등을 포함할 수 있다. 발견 요청에 응답하여, 발견 서비스(508)는 요청 장치(즉, 원격 컴퓨팅 장치 510)에 다시 적합한 타깃 장치 발견 정보를 포함하는 발견 서버 응답(518)을 포워딩할 수 있다.
일단 원격 컴퓨팅 장치(510)가 타깃 장치 LSD(204)에 관련한 적합한 타깃 발견 정보를 수신하였다면, 도 5b에 도시된 바와 같이, 원격 컴퓨팅 장치(510)는 적어도 네트워크 링크(228)를 포함하는 타깃 장치 LSD(204)(콘딧(conduit)으로서 HD 104 사용) 사이에 통신 경로를 설정할 수 있다. 일단 명령 경로가 타깃 장치 LSD(204) 및 원격 컴퓨팅 장치(510) 사이에 설정되었다면, 원격 컴퓨팅 장치(510)는 타깃 장치 LSD(204) 상 임의의 수 및 타입들의 저장 동작을 원격으로 호출할 수 있다. 상기 동작은 예를 들어, 데이터 판독, 기입, 및/또는 소거를 포함할 수 있다.
도 6은 본 발명의 실시예에 따른 프로세스(600)를 열거하는 흐름도를 도시한다. 프로세스(600)는 호스트 장치가 로컬 저장 장치와 통신하는 것이 결정됨으로써 602에서 시작한다. 통신은 호스트 및 로컬 저장 장치가 그들 사이에 설정된 수행 가능 명령 경로를 갖는 것을 의미한다. 수행 가능 통신은 정보가 전달될 수 있는 호스트 장치 및 로컬 저장 장치 사이에 설정된 물리적 접속, 무선 접속, 또는 로컬 접속이 존재한다는 것을 의미한다. 일단 수행 가능 통신 경로가 호스트 장치 및 로컬 저장 장치 사이에 존재하는 것이 결정되었다면, 604에서 로컬 저장 장치가 펜딩 LSD 개시 이벤트를 가진다는 결정이 이루어진다. LSD 개시 이벤트는 임의의 호스트 장치 또는 호스트 장치 파일 시스템 프로세스에 관련되지 않고 무관한 이벤트를 의미한다. 604에서 펜딩 LSD 개시 이벤트가 없다는 것이 결정되면, 프로세스(600)는 종료하고, 그렇지 않으면 606에서 호스트 장치가 로컬 저장 장치를 연속적으로 폴링하는지 여부가 결정된다. 만약 호스트 장치가 로컬 저장 장치를 폴링하지 않으면, 로컬 저장 장치는 펜딩 LSD 개시 이벤트에 관련된 정보를 포함하는 LSD 논리 요청을 608에서 생성하고 610에서 로컬 저장 장치는 LSD 논리 요청과 연관된 인터럽트 플래그(flag)를 방출(through up) 한다. 612에서, 호스트 장치는 인터럽트 플래그에 응답한다.
606으로 되돌아가 가서, 호스트 장치가 로컬 저장 장치를 연속으로 폴링하면, 614에서, 로컬 저장 장치는 펜딩 LSD 개시 이벤트에 관련된 정보를 포함하는 LSD 폴링 응답으로 호스트 장치 폴링에 응답한다. 616에서, 호스트 장치는 LSD 폴링 응답에 응답한다.
도 7은 본 발명의 실시예에 따른 프로세스(700)를 도시한다. 프로세스(700)는 원격 장치가 로컬 타깃 장치상 동작을 원하는지를 결정함으로써 702에서 시작한다. 긍정이면, 704에서 원격 장치가 타깃 장치 정보를 얻기 위하여 발견 서버에 질문을 전송할지를 결정한다. 만약 발견 서버에 질문할 필요가 없다는 것을 원격 장치가 결정하였다면, 706에서 원격 장치는 로컬 장치와 접촉한다. 다른 한편, 타깃 장치에 대한 발견 정보가 필요한지를 원격 장치가 결정하면, 708에서 발견 서버가 타깃 장치 발견 정보를 갖는지 여부가 결정된다. 발견 서버가 요청된 타깃 장치 발견 정보를 가지지 않는 것이 결정되면, 710에서 등록 서버가 요청된 타깃 장치 정보를 갖는지 여부가 결정된다. 타깃 서버가 요청된 타깃 장치 서버를 가지지 않는 것이 결정되면, 프로세스(700)는 종료한다. 그렇지 않으면 등록 서버는 712에서 요청된 타깃 장치 발견 정보를 발견 서버로 포워딩한다. 708로 되돌아 가서, 요청된 타깃 장치 발견 정보를 가진다는 것을 발견 서버가 결정하면, 714에서, 원격 장치는 발견 정보 요청을 발견 서버에 전송하고 716에서 발견 서버는 요청된 타깃 장치 발견 정보를 제공한다. 706에서, 원격 장치는 타깃 장치와 접촉하고 임의의 경우 718에서 타깃 장치는 원격 장치에 응답한다.
도 8은 네트워크(226)의 특정 구성으로서 미디어 네트워크(800)가 미디어 플레이어들 같은 복수의 미디어 장치를 포함하는 경우 본 발명의 환경을 제공한다. 이 실시예에서, 컴퓨팅 시스템(200)은 복수의 디지털 미디어 아이템들(비디오, 가능하면 MP3 파일들 같은 오디오 등 같은)을 저장하기 위하여 배열된 미디어 플레이어(100)일 수 있다. 네트워크(800)는 유선 네트워크(804) 및 무선 네트워크(806) 어느 하나 또는 양쪽으로서 구성된 분산된 통신부들(802)을 포함할 수 있다. 기술된 실시예에서, 유선 데이터 네트워크(802)는 월드 와이드 웹의 일부에 속한다. 퍼스널 컴퓨터(806)는 유선 네트워크(802)(이 경우 제 2 인터페이스에서 USB 케이블에 의해 컴퓨팅 시스템 100에 접속됨)에 결합할 수 있다. 무선 데이터 네트워크(804)는 또한 무선 데이터 네트워크(802)에 결합할 수 있다. 무선 데이터 네트워크(804)는 셀룰러 네트워크들, 와이파이 네트워크들, 와이맥스 네트워크들 등 같은 하나 또는 그 이상의 무선 데이터 네트워크들을 포함할 수 있다.
미디어 네트워크(800)는 복수의 미디어 아이템들을 저장하거나 액세스하는 중앙 미디어 서버(808)를 포함한다. 게다가, 네트워크(800)는 휴대용 미디어 플레이어(200, 810, 812 및 814) 같은 휴대용 미디어 장치들 형태를 가질 수 있는 네트워크 장치들로서 구성된 하나 또는 그 이상의 부가적인 컴퓨팅 시스템들(810)을 지원하고, 상기 휴대용 미디어 플레이어의 일부는 레거시 대량 저장장치를 갖는 것으로서 구성될 수 있지만, 다른 것들은 도 2에 도시된 컴퓨팅 시스템(200)으로서 구성될 수 있다. 임의의 휴대용 미디어 장치들(200, 810, 812 및 814)은 유선 링크(816) 또는 무선 링크(818)를 통해 퍼스널 컴퓨터(806)와 통신할 수 있다. 예로서, 유선 링크(816)는 만약 이용 가능하면 휴대용 미디어 장치(810)를 퍼스널 컴퓨터(806)에 상호접속할 수 있는 케이블(예를 들어, USB 케이블)에 대응할 수 있다. 무선 링크(818)는 블루투쓰, 적외선 등 같은 무선 능력에 의해 제공될 수 있다. 통상적으로, 휴대용 미디어 장치(810)는 유선 링크(816), 무선 링크(816), 또는 양쪽을 사용하여 퍼스널 컴퓨터(806)와 통신할 수 있다.
휴대용 미디어 장치(814)는 무선 링크(820)를 통해 무선 데이터 네트워크(804)에 결합할 수 있다. 유사하게, 휴대용 미디어 장치(812)는 무선 링크(822)를 통하여 무선 데이터 네트워크(804)에 결합할 수 있다. 이와 관련하여, 휴대용 미디어 장치들(814 및 812)은 무선 데이터 네트워크(804)를 통하여 중앙 미디어 서버(808)에 액세스할 수 있다. 게다가, 휴대용 미디어 장치들(810, 812 및 814)은 서로 무선으로 액세스할 수 있어서, 휴대용 미디어 장치들 사이에서 미디어 아이템 데이터를 교환할 수 있다.
컴퓨팅 시스템(200)은 LSD(204) 및 HD(202)를 포함할 수 있는 모바일 전화들 같은 무선 장치 및 MP3 플레이어들 같은 휴대용 미디어 플레이어들에 속할 수 있는 미디어 장치 형태를 가질 수 있다. 이들 모바일 장치들은 모바일 장치 상에서 동작하는 호스트 컴퓨터 상 미디어 관리 애플리케이션을 포함할 수 있다. 모바일 장치들의 휴대성이 제공되면, 모바일 장치들은 보다 작고 보다 적은 자원들(예를 들어, 저장 능력)을 가진다. 결과적으로, 모바일 장치에 사용하기 위해 설계된 미디어 관리 애플리케이션은 보다 크고, 보다 강력한 컴퓨팅 장치, 예를 들어, 퍼스널 컴퓨터 상에서 동작하는 대응 미디어 관리 애플리케이션보다 적은 피쳐들 및 능력들을 제공할 수 있다. 모바일 장치들이 중앙 미디어 서버(808)에 무선 액세스하는 것이 제공되면, 모바일 장치들은 미디어 아이템 데이터(또는 다른 데이터)를 요청 및/또는 수신하기 위하여 미디어 서버(808)와 상호작용할 수 있다. 이와 관련하여, 모바일 장치들 상에서 동작하는 미디어 관리 애플리케이션은 여러 임무를 수행하기 위하여 미디어 서버(808)와 통신할 수 있고, 상기 여러 임무들은 서버에서 이용 가능한 미디어 콘텐트를 네비게이팅(미디어 저장소의 네비게이션 같은), 미디어 장치에 대한 미디어 콘텐트의 주기적 전달 수신(서버로부터 미디어 장치로 미디어 아이템 데이터의 매일 푸싱 같은) 등을 포함한다.
여기에 논의된 로컬 저장 장치는 보안 디지털(SD) 메모리 카드 포맷 같은 임의의 메모리 카드 포맷 또는 프로토콜 및 오디오, 비디오, 또는 픽쳐(picture) 파일들 같은 디지털 미디어를 관리하기 위하여 사용된 프로토콜과 호환할 수 있다. 저장 장치는 멀티 미디어 카드(MMC) 메모리 카드 포맷, 컴팩트 플래시(CF) 메모리 카드 포맷, 플래시 PC(예를 들어, ATA 플래시) 메모리 카드 포맷, 스마트-미디어 메모리 카드 포맷, 또는 임의의 다른 산업 표준 사양들과 호환할 수 있다. 이들 메모리 카드들의 하나의 공급자는 캘리포니아주 밀리타스의 샌디스크 코포레이션이다. 비휘발성 메모리는 전력이 제거될 때에도 메모리를 유지하거나 저장된 상태를 유지한다. 저장 장치는 또한 전기적으로-소거 가능하고 프로그램 가능한 판독-전용 메모리들(EEPROM), EPROM, MRAM, FRAM 강유전체 및 자기 메모리들을 포함하지만 이것으로 제한되지 않는 다른 소거 가능한 프로그램 가능 메모리 기술들에 적용할 수 있다. 저장 장치 구성이 제거 가능한 메모리 타입에 의존하지 않고, 플래시 메모리인지 다른 타입의 메모리인지에 따라 임의의 메모리 타입으로 구현될 수 있다. 저장 장치는 또한 일회 프로그램 가능(OTP) 메모리 칩 및/또는 3차원 메모리 칩 기술로 구현될 수 있다.
상기 메모리 카드들이 사용되는 호스트 시스템들은 휴대 전화들, 퍼스널 컴퓨터들, 노트북 컴퓨터들, 핸드헬드 컴퓨팅 장치들, 카메라들, 오디오 재생 장치들, 및 제거 가능한 데이터 저장을 요구하는 다른 전자 장치를 포함한다. 플래시 EEPROM 시스템들은 또한 호스트 시스템들 내에 내장된 벌크 대량 저장 장치로서 사용된다. 저장 장치는 PDA들(퍼스널 디지털 어시스턴트들), 모바일 핸드세트들, 및 다른 여러 전자 장치들 상에 구현될 수 있는 로컬 프록시 시스템의 일부일 수 있다. PDA는 통상적으로 일부를 가리키기 위하여 어드레스 북, 데일리 오거나이저(daily organizer), 및 전자 노트패드들 같은 여러 퍼스널 정보 관리 애플리케이션들로 구현된 사용자-휴대 컴퓨터 시스템들로서 공지된다.
여기에 기술된 바와 같이, 컴퓨팅 시스템은 호스트 장치(HD) 및 로컬 저장 장치(LSD)를 포함할 수 있다. LSD는 대량 저장 장치 또는 네트워크 액세스 가능 장치로서 동시에 기능할 수 있다. 이런 방식으로, 복수의 애플리케이션은 컴퓨팅 시스템에 의해 작동할 수 있다. 상기 애플리케이션은 서로 독립적으로 실행할 수 있고 또한 LSD 상에 저장된 콘텐트의 대응 세트를 각각 독립적으로 관리할 수 있다. 관리 콘텐트가 LSD 상에 저장된 콘텐트에 의해 또는 상기 콘텐트 상에서 수행된 임의의 수의 동작을 포함할 수 있다는 것을 주의해야 한다. 상기 동작은 데이터 판독, 데이터 기입, 데이터 소거, 데이터 카핑, 데이터 포맷팅 및 등등을 포함할 수 있지만, 이것으로 제한되지 않는다. 본 발명에 의해 제공된 장점들 중 하나는 비록 애플리케이션들이 서로에 대한 관련이 없지만 다른 하나의 애플리케이션들에 의해 LSD 상에서 이용 가능한 콘텐트를 하나의 애플리케이션에게 알리기 위한 LSD의 능력이다. 이런 방식으로, 독립적 애플리케이션들 사이의 시너지가 예를 들어, 컴퓨팅 시스템의 개선된 동작, 개선된 자원(즉, 메모리, 대역폭, 프로세싱) 할당 및 사용, 및 다른 팩터들을 유발할 수 있는 공동-동작 환경을 제공하여 달성될 수 있다.
예를 들어, 도 9는 본 발명의 실시예에 따른 컴퓨팅 시스템(1100)을 도시한다. 시스템(1100)은 메모리 어레이(1106)를 갖는 LSD(1104)와 통신하는 호스트 장치(HD)(1102)를 포함한다. HD(1102)는 실행 애플리케이션들(1108)일 수 있다. 애플리케이션들(1108)은 LSD(1104) 상 연관된 로컬(브라우저) 캐시(1114)를 관리하는 브라우저 캐시 관리자(BCM)(1112)를 갖는 브라우저 애플리케이션(1110) 같은 인터넷 애플리케이션들을 포함할 수 있다. BCM(1112)은 메모리 제어기(1120) 및 LSD 드라이버(1122)를 포함할 수 있는 대량 저장 경로(1118)이라 지칭될 수 있는 것을 사용하여 HDFS(1116)에 의해 브라우저 캐시(1114)를 관리할 수 있다. LSD(1104)는 네트워크 인터페이스(1130)를 포함하는 네트워크 경로(1128)를 통해 원격 프록시 캐시 관리자(PRCM)(1126)에 의해 관리되는 프록시 캐시(1124)를 포함할 수 있다. 네트워크 경로(1128)가 HDFS(1116)와 무관한 LSD(1104)의 프롬프팅에서 HD(1102)에 의해 설정될 수 있다는 것을 주의해야 한다. 게다가, 네트워크 경로(1128)가 HD(1102)에 의해 설정되면, 네트워크 경로(1128)(및 임의의 다른 "하우스키핑" 듀티들")를 제외하고 HD(1102)에 의한 추가 개입은 없다.
동작 동안, RPCM(1126)은 선제 방식으로 LSD(1104)에 직접 미리-페치된 콘텐트(1138)를 푸시할 수 있다. 선제 방식은 미리-페치된 콘텐트(1138)이 콘텐트(1138)에 대한 BCM(1112)에 의한 임의의 실제 요청 전에 LSD(1104)에 푸시될 수 있어서, 네트워크 경로(1128)를 통하여 실제 요청이 RPCM(1126)에 전송될 필요성을 제거하는 것을 의미한다. 이런 방식으로, 네트워크 대역폭은 보전될 수 있다.
명확하게 BCM(1112) 및 RPCM(1126)은 다르게 사용된다. 예를 들어, BCM(1112)은 LSD(1104)의 브라우저 캐시(1114)에 브라우저 애플리케이션(1110)에 의해 이미 요청된 콘텐트(1140)를 로컬적으로 캐시하기 위하여 대량 저장 경로(1118)를 통해 동작할 수 있다. 한편, PRCM(1126)은 통상적으로 콘텐트 사전-페칭(즉, 특정 콘텐트가 요청되기 전에 콘텐트 검색) 같은 BCM(1112)의 도움으로 기능들을 수행한다. 그러나, BCM(1112) 및 RPCM(1126)은 통상적으로 다른 밴더들에 의해 제공되고, 그러므로 BCM(1112) 및 RPCM(1126)은 대부분 다른 캐싱 정책들을 가질 수 있다. 게다가, 대량 저장 경로(1118) 및 네트워크 경로(1128)가 서로 크로스(즉, 통신) 하지 않으면, BCM(1112) 및 RPCM(1126)은 동기화된 방식으로 기능하지 않을 수 있다.
이러한 동기성의 결핍은 BCM(1112)/RPCM(1126)의 전체 성능 측면에서 서브-최적이다. 예를 들어, RPCM(1126)은 BCM(1112)에 의해 이미 저장된 콘텐트를 저장할 수 있고(및 그 반대도 가능) 이에 의해 귀중한 메모리, 프로세싱, 그리고 대역폭 자원들을 낭비한다. 이런 자원들의 낭비는 대부분 또는 모든 자원들이 고가인 모바일 환경들에서 특히 문제일 수 있다. 그러나, 본 발명은 통상적으로 배열된 시스템들에 이용할 수 없는 방식으로 협력하기 위한 RPCM(1126) 및 BCM(1112)를 제공한다. 예를 들어, LSD(1104)는 BCM(1112)이 브라우저 캐시(1114)에 캐싱하는 브라우저 콘텐트(1140)의 타입 및 성질을 RPCM(1126)에게 알릴 수 있다. 이런 방식으로, RPCM(1126)은 예를 들어, BCM(1112)에 의해 브라우저 캐시(1114)에 이미 캐시된 페이지들의 링크들에 대응하는 임의의 페이지를 자동으로 미리-페칭할 수 있다. 게다가, RPCM(1126)은 브라우저 캐시(1114)에 이미 저장된 캐시 콘텐트(1140)에 요청된 노력을 중복하여 하는 것을 회피할 수 있어서, 가치있는 자원들의 임의의 비생산적인 사용을 감소시킨다. 게다가, RPCM(1126)은 BCM(1112)의 캐싱 정책을 "리버스-엔지니어(reverse-engineer)할 수 있어서, "BCM(1112) 동작을 예측하기 위한 RPCM(1126)의 능력을 개선하고 이에 따라 RPCM(1126) 및 BCM(1112)의 전체 상호작용 효율성을 개선한다. 이런 효율성 개선은 최종 사용자의 인터넷 경험의 실질적 개선을 유발할 수 있다.
도 10은 도 9에 도시된 시스템(100)의 특정 실시예를 도시하는 시스템(1200)을 도시한다. 시스템(1200)은 로컬 저장 장치(LSD)(1204)와 접속되거나 통신하는 호스트 장치(HD)(1202)를 포함할 수 있다. HD(1202) 및 LSD(1204)는 HD/LSD 인터페이스(1206)에 의해 HD(1202)와 통신할 수 있다. LSD(1204)는 비교적 소형의 팩터를 갖는 메모리 카드 같은 제거 가능한 메모리 장치들 형태를 가질 수 있고 카메라들, 핸드-헬드 또는 노트북 컴퓨터들, 네트워크 카드들, 네트워크 기구들, 셋톱 박스들, 핸드-헬드 또는 다른 작은 오디오 플레이어들/레코더들(예를 들어, MP3 장치들), 및 의료 모니터들 같은 전자 제품들에 대해 디지털 데이터를 저장하기 위하여 사용될 수 있다. 메모리 카드의 예들은 PC 카드(이전에 PCMCIA 장치), 플래시 카드(예를 들어, 컴팩트 플래시 타입 Ⅰ및 Π), 보안 디지털(SD) 카드, 멀티미디어 카드(MMC), ATA 카드(예를 들어, 컴팩트 플래시 카드), 메모리 스틱, 스마트미디어 카드를 포함한다. 게다가, LSD(1204)는 CA주 밀리타스의 샌디스크 코포레이션에 의해 제조된 SD 호환 가능 iNANDTM 내장 플래시 드라이브 같은 비-제거 가능 메모리 장치들 형태를 가질 수 있다.
HD(1202) 및 LSD(1204)가 기계적으로 종속하는 기계적 엔티티(소켓 또는 상호접속 버스 같은)로서 HD/LSD 인터페이스(1206)가 구성될 수 있다는 것을 주의해야 한다. 몇몇 실시예에서, HD/LSD(1206)는 무선 인터페이스 형태를 가질 수 있다. HD(1202)는 프로세서를 포함하지만, 간략화를 위해, HD(1202)에 포함된 프로세서는 이 논의에서 추가로 도시되거나 언급되지 않고, 하지만 존재할 것이라 가정된다. LSD(1204)는 HD(1202)에만 물리적으로 접속될 수 있고 그러므로 HD(1202)에 의한 개입 없이 시스템(1200) 외부의 회로들 및/또는 애플리케이션들과 액세스하거나 통신할 수 없다. 통상적으로, LSD(1204)는 HD(1202)에 의해 제공된 인터페이스와 다른 HD(1202) 외부의 장치에 대해 임의의 인터페이스를 사용하지 않는다.
HD(1202)는 호스트 장치 파일 시스템(HDFS)(1208)을 포함한다. HDFS(1208)는 LSD 드라이버(도시되지 않음) 및 HD/LSD 인터페이스(1206)에 의해 LSD(1204)에 전달될 수 있는 LSD 관리 명령(1210)을 발행할 수 있다. 예를 들어, LSD 관리 명령(1210)은 LSD(1204)가 논리 블록 어드레스(LBA) 아키텍쳐를 갖는 데이터 저장 영역을 포함하도록 구성되는 경우들에서 블록 명령 형태를 가질 수 있다. 시스템(1200)은 서로 무관하게 실행할 수 있는 LSD(1204) 또는 HD(1202) 상에 잔류하는 복수의 애플리케이션들을 또한 가질 수 있다. 게다가, 애플리케이션들 각각은 각각이 서로 독립적인 LSD(1204) 상 데이터의 그 자신의 특정 캐시를 관리할 수 있다. 상기 애플리케이션은 예를 들어, 상기 논의된 대량 저장 경로(1118)를 사용하여 LSD(1204)와 통신하도록 HDFS(1208)를 사용할 수 있는 BCM(1112)에 의해 지원된 브라우저(1212) 같은 인터넷 애플리케이션들을 포함할 수 있다. 브라우저 애플리케이션(1212) 외에, 독립적인 애플리케이션들(1214)은 LSD(1204)와 통신하도록 HDFS(1208)를 사용할 수 있고 그러므로 HDSF(1208)에 보여진다. 애플리케이션들(1214)과 대조하여, 특정 독립적 애플리케이션은 LSD(1204)에 데이터를 저장하기 위해 대량 저장 경로(1118)를 사용하지 않는다. 상기 애플리케이션은 외부, 또는 타깃 애플리케이션(1216)이라 지칭될 수 있고 HDFS(1208)에 "보이지" 않는다.
기술된 실시예에서, 타깃 애플리케이션(1216)은 로컬적으로 또는 원격으로 임의의 복수의 위치들 및 장치에 잔류할 수 있다. 상기 위치들 및 장치들은 예를 들어, HD(1202)(로컬 애플리케이션 1216-1을 가짐), 또는 HD(1202) 및 LSD(1204) 외부에 있지만 외부 장치(1218)(로컬 애플리케이션 1216-2이 있는) 같은 시스템(1200) 내에 있는 임의의 장치를 포함할 수 있다. 기술된 실시예에서, 외부 장치(1218)는 HD(1202)에 대한 인터페이스(1220)를 통해 결합된 제 2 LSD(1218) 형태를 가질 수 있다. 게다가, 상기 위치들 및 장치들은 원격 장치(1222)(프록시 캐시 1124를 관리하는데 적합한 RPCM 1126 형태를 가질 수 있는 원격 애플리케이션 1216-3이 있음)를 포함할 수 있다.
LSD(1204)는 제어기(1224) 및 데이터 저장 영역(1226)을 포함할 수 있다. 데이터 저장 영역(1226)은 대량 저장 경로(1118)를 사용하여 HDFS(1208)에 의해 관리된 적어도 대량 저장 영역(1228)을 포함하도록 논리적으로 배열될 수 있다. 데이터 저장 영역(1226)은 HDFS(1208)에 보이지 않는 부분(1230)을 포함하도록 논리적으로 배열될 수 있다. HDFS(1208)에 보이지 않는 것은 보이지 않는 부분(1230)이 HDFS(1208)에 의해 관리되지 않고 그러므로 HDFS(1208)에 직접 액세스할 수 없다는 것을 의미한다.
대량 저장 영역(1228)은 브라우저(1212)의 지원으로 BCM(1112)에 의해 제공된 브라우저 콘텐트(1140)를 포함할 수 있는 브라우저 캐시(1114)를 포함하도록 추가로 논리적으로 배열될 수 있다. 브라우저 캐시(1114)에 브라우저(1212)에 의해 이전에 사용된 정보를 로컬적으로 캐싱함으로써, 브라우저(1212)를 제공하기 위해 사용된 네트워크 대역폭의 양은 감소된다. 모바일 네트워크 대역폭의 감소는 특히 이용 가능한 네트워크 대역폭이 제한될 수 있기 때문에 모바일 네트워크의 효과적인 동작에 필수적일 수 있다. 보이지 않는 부분(1230)은 프록시 캐시(1124)를 포함하도록 논리적으로 배열될 수 있다.
캐싱 메커니즘의 수행과 관련된 발행은 콘텐트가 캐시되고 캐시로부터 제거되는 방법을 결정하는 캐싱 정책이다. 캐싱 정책은 통상적으로 컴퓨터 상에 저장된 정보의 캐시를 관리하기 위하여 이후의 애플리케이션 개발자들에 의해 보급되는 최적화 명령들로 형성된다. 캐시 크기는 일반적으로 제한되고, 만약 캐시가 풀(full)이면, 캐싱 정책은 새로운 것들을 위한 룸을 만들기 위해 어떤 아이템들을 버려야 할지를 선택하여야 한다. 가장 효율적인 캐싱 알고리듬(또한 캐싱 발견적 학습이라 지칭됨)은 항상 미래에 가장 오랜 시간 동안 필요하지 않을 정보를 버리는 것이다. 미래에 얼마나 멀리 정보가 필요한지를 예측하는 것이 불가능하기 때문에, 이것은 실제적이지 않다. 실제적 최소 값은 경험 후에만 계산될 수 있고, 최적 최소량과 실제로 선택된 캐시 알고리듬의 효율성을 비교할 수 있다. 여러 캐싱 정책들의 예들은 LRU(Least Recently Used), MRU(Most Recently Used), 의사-LRU 및 적응성 대체 캐시(ARC)를 포함한다.
캐시에 저장된 자원들의 시간적 성질 외에, 저장된 콘텐트 자체의 성질은 중요한 고려 대상일 수 있다. 저장된 콘텐트의 성질은 상이한 비용을 갖는 아이템(얻기에 값비싼 아이템들, 예를 들어, 오랜 시간에 걸쳐 얻는 것) 또는 보다 많은 캐시를 채택하는 아이템들(만약 아이템들이 다른 크기들을 가지면, 캐시는 몇몇 보다 작은 것들을 저장하기 위해 큰 아이템을 버리기를 원할 수 있다), 및 시간과 함께 종료하는 아이템들일 수 있다. 이들 고려 사항들 모두 또는 단지 일부는 애플리케이션 개발자가 애플리케이션과 연관된 캐시에 적용될 캐싱 정책을 공식화할 때 가변하는 정도로 고려될 수 있다.
브라우저(1212)의 경우, 브라우저 캐시(1114)에 적용된 적합한 캐싱 정책은 특히 브라우저(1212)가 사용될 모바일 환경에서 보았을 때 상기된 고려들 중 임의의 것 또는 모두에 의존할 수 있다. 브라우저(1212)가 모바일 환경에 사용될 것이기 때문에, 특정 고려 사항은 네트워크 트래픽, 이용 가능한 대역폭 등에 이를 때 특히 큰 부담을 나타내는 아이템들에 제공될 수 있다. 그러므로 브라우저 개발자는 모바일 WEB 환경에 사용될 때 브라우저(1212)의 성능을 최적화하기 위하여 특히 맞추어진 브라우저 캐시 정책을 생성할 것이다. 프록시 캐시(1124)에 적용된 임의의 캐싱 정책은 브라우저 캐시(1114)에 적용된 캐싱 정책과 매우 다를 수 있다. 프록시 캐시 캐싱 정책 및 브라우저 캐시 캐싱 정책 사이의 잠재적 미스-매칭은 브라우저(1212)에 의해 나타난 상당한 비효율성들 및 성능 손실을 나타낼 수 있다. 예를 들어, 프록시 캐시(1124)에 적용된 프록시 캐시 캐싱 정책은 내부에 저장된 자원의 "신선도"의 희생으로 이용 가능한 캐시 메모리 공간을 보전하는 것에 관련될 수 있는 반면, 브라우저 캐시(1114)에 적용된 브라우저 캐싱 정책은 단지 반대이고, 임의의 다른 팩터를 희생하여 "가장 신선한" 자원을 유지하는데 초점을 맞추는데 관련된다. 그러므로, 이 예에서, 프록시 캐시 캐싱 정책 및 브라우저 캐시 캐싱 정책은 프로세스에서 프록시 캐시(1124)의 동작 및 브라우저 캐시(1114)의 동작의 기본적 충돌을 생성하는 크로스 목적들에서 작용한다. 명확하게, 프록시 캐시(1124) 및 브라우저 캐시(1114)가 로컬 캐시 시스템의 전체적인 효율성 및 사용성을 개선하기 위하여 더 많이 실시되는 콘서트에서 작동하는 것이 바람직하다.
본 발명의 특징 중 하나는 LSD(1204)가 브라우저 캐시(1114)에 저장된 데이터의 성질(즉, 파일들 크기, 파일들 종류) 및 브라우저(1114)에 저장된 데이터의 동적 능력(즉, 파일들의 유지 길이)을 기반으로 브라우저 캐시 캐싱 정책을 추론할 수 있다는(즉, 리버스 엔지니어) 것이다. 예를 들어, 브라우저 캐시 콘텐트(1140)의 현재 상태와 임의의 수의 브라우저 캐시 콘텐트(1140)의 이전 상태들 사이에서 비교가 이루어질 수 있다. 이런 방식으로, 브라우저 캐시 콘텐트(1140)의 시간에 따른 상태 변화를 가리키는 패턴은 전개될 수 있다. 이런 패턴은 예를 들어, 브라우저 캐시 캐싱 정책을 추론하기 위하여 LSD(1204)에 의해 사용될 수 있다. 예를 들어, 만약 브라우저 캐시(1114)가 적어도 최근에 사용된 아이템들을 우선 버리는 것을 LSD(1204)가 결정하면, LSD(1204)는 브라우저 캐시(1114)가 LRU 타입 캐싱 정책의 라인들을 따라 구성된 브라우저 캐시 캐싱 정책에 의해 관리되는 것을 추론할 수 있다. 다른 한편, 만약 브라우저 캐시(1114)가 가장 최근에 사용된 아이템들을 우선 버리는 것을 LSD(1204)가 추론하면, LSD(1204)는 브라우저 캐시(1114)가 MRU 타입 캐싱 정책의 라인들을 따라 구성된 캐시 정책 이후에 온다는 것을 추론할 수 있다. 어느 경우나, 일단 LSD(1204)가 브라우저 캐시 캐싱 정책을 추론하였다면, LSD(1204)는 로컬 캐시 시스템의 전체적인 효율성 개선을 유발하는 프록시 캐시 캐싱 정책을 변경하기 위하여 추론된 브라우저 캐시 캐싱 정책을 사용할 수 있다.
예를 들어, 브라우저 캐시(1114)가 LRU 타입 캐싱 정책 다음에 오는 것을 LSD(1204)가 추론하였다면, LSD(1204)는 적어도 최근에 사용된 프록시 캐시 콘텐트를 우선적으로 버리기 위하여 프록시 캐시 캐싱 정책을 변경할 수 있다. 이런 방식으로, 전체 콘텐트 중복은 로컬 캐시 시스템의 전체적인 사용을 개선하여 감소될 수 있다. 반대로, 브라우저 캐시(1114)가 MRU 타입 캐싱 정책 다음에 오는 것을 LSD(1204)가 추론하면, LSD(1204)는 가장 최근에 사용된 프록시 캐시 콘텐트를 우선적으로 버리기 위하여 프록시 캐시 캐싱 정책을 변경할 수 있다. 어느 경우나, LSD(1204)는 적합한 것으로 간주되는 프록시 캐시 캐싱 정책을 변경하기 위한 자유를 가진다.
예를 들어, 모바일 WEB 환경에서, 프록시 캐시 관리자의 중요 용도는 웹 페이지 사전-페칭을 수행하는 것이다. 브라우저가 최종 사용자에 가장 가까운 터넷의 에지 상에 자리하기 때문에, 브라우저 성능의 임의의 개선은 최종 사용자의 전체적인 브라우징 경험을 상당히 강화할 수 있다. 그러므로, 프록시 캐시 관리자의 동작을 관리하기 위하여 사용된 캐시 정책을 변경함으로써, 프록시 캐시 관리자는 예를 들어, 브라우저 캐시에 이미 저장된 브라우저 캐시 콘텐트와 연관된 프록시 캐시 콘텐트(WEB 페이지 같은)를 자동으로 사전-페칭함으로써 관찰된 브라우저 성능을 개선할 수 있다. 예를 들어, 페이지(P)가 브라우저 캐시 내에 저장되면, 프록시 캐시는 페이지(P)의 링크들 상에 나타나는 임의의 WEB 페이지들(즉, 페이지들 P+1 및 등등)을 자동으로 사전-페칭할 수 있다.
도 11은 본 발명의 실시예에 따라 LSD(1104)에 포함된 대표적인 제어기(1300)를 도시한다. 제어기(1300)는 제어기(1120) 상에서 작동하는 애플리케이션들을 나타내는 여러 기능 블록들을 도시하는 도 9에 도시된 제어기(1120)의 특정 실시예이다. 따라서, 제어기(1300)는 HDFS(1208)와 통신하는 관리 블록(1302)을 포함한다. 관리 블록(1302)은 차례로 대량 저장 필터 블록(1304)과 통신한다. 대량 필터 블록(1304)은 인터넷 파일 관리자 블록(1306) 및 프록시 캐시 관리자 블록(1308) 양쪽과 통신한다. 양쪽 인터넷 파일 관리자 블록(1306) 및 프록시 캐시 관리자 블록(1308)은 각각 프록시 서버 블록(1310)과 통신할 수 있다. 기술된 실시예에서, 대량 저장 필터 블록(1304)은 브라우저 캐시(1114)에 저장된 브라우저 캐시 콘텐트(1140)에 관한 정보를 프록시 캐시 관리자 블록(1308)에 제공할 수 있다. 저장된 콘텐트의 성질을 추론하고 이 추론을 RPCM에 통신하기 위해 사용될 수 있는 복수의 기술들이 있다. 하나의 기술은 저장된 콘텐트 파일과 연관된 이름 및 그의 대응하는 파일 확장자(".htm" 같은)를 결정하기 위하여 제공한다. 일단 이 정보가 공지되면, RPCM에 통신될 수 있다. 프록시 캐시 관리자 블록(1308)은 LSD(1104)에 대해 로컬일 수 있다. 몇몇 구현들에서, 프록시 캐시 관리자 블록(1308)은 원격 프록시 서버(1126) 같은 원격 장치에 잔류할 수 있다.
적어도 콘텐트 분배에 대한 푸시/풀 접근법의 장점을 제공하는 보호된 디지털 콘텐트의 안전한 분배 및 소비를 위한 해결책을 제공하는 방법, 시스템, 및 장치가 기술된다. 이런 논의 맥락에서, '보호된 디지털 콘텐트'는 콘텐트 제공자들에 의해 부과된 사용 및 액세스 제한들 같은 제한들을 갖는 디지털 콘텐트를 말한다. 예를 들어, 사용 제한들은 예를 들어, 특정 횟수들 또는 특정 시간 길이만 콘텐트를 플레이하고 인증되지 않은 카피를 방지하는 것을 포함할 수 있다. 액세스 제한들은 적합한 액세스 증명서들을 갖는 엔티티들로만 보호된 디지털 콘텐트에 대한 액세스를 제한할 수 있다. 보호된 디지털 콘텐트는 콘텐트 제공자들에 의해 부과된 모든 제한들을 유지하기 위하여 특정 DRM 스킴에 따라 임의의 관련 구성을 커버할 수 있다. LSD에서 수신된 보호된 콘텐트는 콘텐트만 또는 콘텐트의 보호된 부분만 그리고 만약 콘텐트의 대응 보호된 부분이 LSD에 이미 저장되면 '결합된 전달'이라 불리는 임의의 연관된 RO들, 또는 '독립된 전달'이라 불리는 RO들을 포함할 수 있다.
본 발명은 호스트 장치 파일 시스템(HDFS)을 갖는 호스트 장치(HD) 및 메모리 제어기에 의해 제어되는 대량 저장 메모리 어레이를 갖는 로컬 저장 장치(LSD)를 포함하는 컴퓨팅 시스템 측면에서 기술될 수 있다. 여기에 기술된 실시예에서, HDFS는 LSD 드라이버를 포함하는 대량 저장 경로를 통해 대량 저장 메모리 어레이를 관리한다. 몇몇 경우들에서, 메모리 어레이는 내부에 저장된 사전-로딩된 디지털 콘텐트를 가질 수 있다. 사전-로딩된 디지털 콘텐트는 제조자, OEM, 또는 임의의 콘텐트 제공자에 의해 메모리 어레이에 저장된 디지털 콘텐트를 의미한다. 상기 사전-로딩된 디지털 콘텐트는 보호된 및 보호되지 않은 사전-로딩된 미디어 아이템들 모두를 포함할 수 있는 노래들, 음악, 및/또는 비디오 같은 미디어 아이템들을 포함할 수 있다. 메모리 어레이가 사전-로딩된 디지털 콘텐트를 포함하는지 아닌지에 따라, LSD는 획득이 HDFS에 보이지 않는 디지털 콘텐트 서버로부터 디지털 콘텐트를 획득할 수 있다. 그러나, 몇몇 경우들에서 만약 메모리 어레이가 내부에 저장된 사전-로딩된 디지털 콘텐트를 가지면 LSD가 수신된 디지털 콘텐트를 저장하거나 디지털 콘텐트 서버로부터 모든 디지털 콘텐트를 수신할 수 없는 것이 바람직할 수 있다. 이런 상황은 예를 들어, 콘텐트 발생기(originator)가 메모리 어레이 내에 사전-로딩된 디지털 콘텐트(음악, 노래들, 및 등등을 포함하는 독점 콘텐트 같은)를 가질 때 및 LSD에 저장된 부가적인 콘텐트(독점 디지털 콘텐트와 연관되지 않음)를 원하지 않을 때를 포함한다. 이들 경우들에서, LSD는 임의의 디지털 콘텐트를 획득하는 것이 방지되거나 메모리 어레이 내 디지털 콘텐트를 저장하는 것이 방지되지만 그럼에도 불구하고 메모리 어레이로부터 사전-로딩된 디지털 콘텐트를 스트리밍할 수 있다.
어느 경우에나, 디지털 콘텐트가 LSD에 의해 획득될 때마다, 상기 획득은 HDFS에 보이지 않고 일반적으로, 상기 획득은 대량 저장 경로에 보이지 않는다. LSD는 임의의 수의 방식으로 메모리 어레이에 획득된 보호된 디지털 콘텐트를 안전하게 저장할 수 있다. 몇몇 경우들에서, LSD에 수신된 보호된 디지털 콘텐트의 몇몇 변환이 발생할 수 있다. 예를 들어, RO들은 메모리 어레이의 HDFS-보이지 않는 부분에 언인크립트된 형태(즉, "클리어(clear)로")로 저장될 수 있고, 대응 디지털 콘텐트는 HDFS에 보이는 어레이의 일부에 저장될 수 있다. 대안적으로, RO들은 비록 인크립트된 형태이지만 HDFS에 보이는 메모리 어레이 부분에 저장될 수 있다. 어느 경우나, 디지털 콘텐트는 디지털 콘텐트에 의해 유지된 사용 제한들 내에서 사용자 제어 하에 로컬적으로 안전하게 저장될 수 있다. 게다가, HD 내 대량 저장 경로에 부가적인 DRM 소프트웨어를 부가하거나 통합할 필요가 없으므로 아트(art) 보안 상태와 호환성을 유지하여, 콘텐트 제공자 요구조건들을 만족시킨다. 일단 메모리 어레이에 저장되면, LSD는 메모리 어레이로부터 디지털 콘텐트 모두 또는 일부(예를 들어, 사용자가 플레이하기 위하여 특정 미디어 아이템을 선택할 때 같은)를 스트리밍할 수 있다.
도 12a는 보호된 디지털 콘텐트를 안전하게 분배하고 소비하는데 적합한 본 발명의 실시예에 따른 시스템(2900)을 도시한다. 시스템(2900)은 HD(202), LSD(204), 및 디지털 콘텐트(2904)를 저장하기 위하여 배열된 디지털 콘텐트 서버(2902)를 포함한다. 디지털 콘텐트(2904)는 보호되거나 보호되지 않은 디지털 콘텐트를 포함할 수 있다. 디지털 콘텐트를 보호하기 위하여 사용되는 많은 스킴들이 있고, 많은 것은 DRM 하에 속한다, (디지털 미디어 또는 장치들의 사용을 제한하기 위하여 공개자들 및 카피라이트 홀더들에 의해 사용된 제어 기술들에 액세스하는 것을 지칭하는 포괄적 용어). 특정 DRM 스킴을 일반적으로 적어도 보호된 디지털 콘텐트(PDC) 획득 방법(별개의 전달의 경우 RO 획득 방법에 해당함) 및 임의의 사용/액세스 제한들의 보안 시행을 허용하는(RO 시행 방법을 포함할 수 있음) 적어도 보호된 디지털 콘텐트 소비 방법을 정의한다. 보안 PDC 획득 및 보안 PDC 소비 방법들을 정의하는 것과 동시에, 콘텐트 제공자들은 일반적으로 '보안'이 의미하는 바를 정의하기 위한 강건한 룰들의 세트를 규정한다. 이것은 일반적으로 어느 메커니즘들(즉, 소프트웨어 또는 하드웨어)이 보호된 디지털 콘텐트가 인증되지 않은 사용 및/또는 액세스를 회피하기 위하여 로컬적으로 저장되어야 하는지를 규정하는 보안 저장 규정을 포함한다. 이런 논의의 맥락에서, 임의의 주어진 DRM 스킴에 대해, LSD가 콘텐트 제공자에 의해 호출된 임의의 요구된 보안 저장 규정들과 적어도 호환할 수 있다는 것이 가정된다.
종래의 시스템에서, HD(202)는 보호된 디지털 콘텐트(2904)가 분배되고 궁극적으로 최종 사용자에 의해 소비되도록 요구되는 특정 DRM 프로그램을 포함하여야 한다. 종래 기술에서, 이것은 일반적으로 콘텐트/연관된 RO들이 인증된 방식으로 소비되도록, DRM-특정 콘텐트를 핸들링하기 위해 몇몇 DRM-특정 애플리케이션을 대량 저장 경로에 통합함으로써 달성된다. 여기서 상기 가정은 주어진 DRM 스킴에 대해, LSD가 적어도 요구된 '보안 저장 규정들'과 호환할 수 있다는 것이다. 그러나, 본 발명은 디지털 콘텐트 서버(2902)로부터 수신되고 LSD(204)에 저장된 임의의 디지털 콘텐트가 모든 제한들을 유지하고 그러므로 대량 저장 경로에 통합될 부가적인 DRM-특정 에이전트를 요구하지 않기 때문에 HDFS 또는 HD와 임의의 특정 DRM 모듈/애플리케이션을 통합하도록 HD(202)에게 요구하지 않는다. 기술된 실시예에서, 저장 어레이(238)는 대량 저장 경로를 사용하여 HDFS(208)에 의해 관리되는 대량 저장 영역(2908) 및 HDFS 보이지 않는 저장 영역(2910)을 포함하도록 논리적으로 배열될 수 있다. HDFS(208)에 보이지는 않는 것은 HDFS(208)가 보이지 않는 저장 영역(2910)을 관리하지 못한다는 것을 의미한다. 이런 방식으로, HDFS(208)는 보이지 않는 저장 영역(2910)에서 수행되는 임의의 저장 동작 또는 상기 영역에 저장된 콘텐트를 인식하지 못한다.
동작 동안, HD(202)는 대량 저장 영역(2908)이 임의의 사전-로딩된 보호된 디지털 콘텐트(2912)를 포함하는지를 결정한다. 상기 사전-로딩된 보호된 디지털 콘텐트는 예를 들어, 광고, 및 등등에 관련된 디지털 음악 파일들, 디지털 비디오 파일들, 디지털 미디어 파일들 같은 예를 들어, 독점 디지털 파일들을 포함할 수 있다. 만약 대량 저장 영역(2908)에 저장된 사전-로딩된 보호된 디지털 콘텐트(2912)가 없다는 것을 HD(202)가 결정하면, LSD(204)는 LSD(204) 및 디지털 콘텐트 서버(2902) 사이에 통신 경로(2914)를 설정하기 위해 HD(202)를 프롬프트할 수 있다. (디지털 콘텐트 서버 2902가 통신 경로 2914를 설정하기 위해 HD 202를 프롬프트할 수 있다는 것을 주의해야 한다. 일단 통신 경로(2914)가 설정되었다면, HD(202)는 통신 경로(2914)를 유지하는 것을 제외하고 더 이상 연루되지 않는다. LSD(204) 및 디지털 콘텐트 서버(2902)는 HD(202)에 의한 추가 개입 없이(통신 경로 2914를 유지하는 것 제외) 통신 경로(2914)를 통하여 논리적으로 상호작용할 수 있다. 논리 상호작용의 일부로서, 디지털 콘텐트 서버(2902) 또는 LSD(204)는 LSD(204) 및 원격 디지털 콘텐트 서버(2902)가 서로를 인증하도록 원격 디지털 콘텐트 서버(2902) 및 LSD(204) 사이 인증 세션을 개시할 수 있다.
일단 인증 세션이 성공적으로 완료되었다면(즉, LSD 204 및 디지털 콘텐트 서버 2902가 인증되었다면), LSD(204) 및 디지털 콘텐트 서버(2902)는 통신 경로(2914)를 통하여 논리 상호작용을 재개할 수 있다. 보다 일반적으로, 임의의 보호된 디지털 콘텐트 획득 메커니즘은 콘텐트 제공자의 보안 요구조건들을 만족시키기 위하여 실행될 수 있다. 상기 획득 메커니즘의 일 예는 OMA(Open Mobile Alliance) DRM의 경우 ROAP(Rights Object Acquisition Protocol)이다. 논리 상호작용의 일부로서, LSD(204)는 원격 디지털 콘텐트 서버(2902)로부터 LSD(204)로 보호된 디지털 콘텐트(2904)(예를 들어, RO들만을 포함할 수 있음)의 전달을 개시할 수 있거나 디지털 콘텐트 서버(2902)는 디지털 콘텐트 서버(2902)로부터 LSD(204)로 보호된 디지털 콘텐트의 전달을 개시할 수 있다. 어느 경우나, 일단 보호된 디지털 콘텐트(2904)가 수신되면, 제어기(236)는 메모리 어레이(238) 내에 보호된 디지털 콘텐트(2904)를 안전하게 저장할 수 있다. 몇몇 경우들에서, 제어기(236)는 대량 저장 영역(2908) 내에 보호된 디지털 콘텐트(2904)를 저장할 수 있다. 그러나, 대량 저장 영역(2908)에 저장된 임의의 데이터가 HDFS(208)에 보여지기 때문에, 임의의 상기 데이터는 인크립트될 수 있다. 그러나, 만약 제어기(238)가 보이지 않는 영역(2910)에 보호된 디지털 콘텐트(2904)를 저장하면, 상기 인크립션은 필요하지 않다. 예를 들어, 디지털 콘텐트 및 대응 RO들로 형성된 보호된 디지털 콘텐트의 보안 저장은 HDFS 보이지 않는 영역에 콘텐트 및 RO들 모두를 저장함으로써 달성될 수 있거나 인크립트된 콘텐트는 보이는 부분에 저장되고 대응 RO들은 보이지 않는 부분에 저장되고, 기타 등등도 가능하다.
도 12b에 도시된 바와 같이, 제어기(236)는 디지털 콘텐트 스트리밍 서버(2916)를 포함하도록 논리적으로 배열될 수 있다. 디지털 스트리밍 서버(2916)는 메모리 어레이(238)에 저장된 임의의 디지털 콘텐트(사전-로딩 디지털 콘텐트 포함)를 판독할 수 있다. 디지털 콘텐트 스트리밍 서버(2916)는 저장 어레이(238)로부터 판독된 임의의 데이터를 데이터 스트림(2920)으로 구성할 수 있다. 데이터 스트림(2920)은 예를 들어, 당업자에게 잘 공지된 헤더 및 페이로드로 형성될 수 있는 적어도 하나의 데이터 패킷(2922)을 포함할 수 있다. 몇몇 경우들에서, 데이터 패킷(2922)은 인크립트될 수 있다. LSD(204)는 데이터 패킷(2922)이 데이터 스트림(2920) 형태로 전달될 수 있는 스트리밍 채널(2924)을 설정하기 위하여 HD(202)를 프롬프트할 수 있다. 스트리밍 채널(2924)은 본래 콘텐트 제공자 요구조건들에 따라 보안 채널 또는 비-보안 채널일 수 있다. 데이터 패킷(2922)이 인크립트되는 경우에서, 인증되지 않은 사용에 관한 부가적인 보호는 보안 채널(2924)을 통하여 인크립트된 데이터 패킷(2922)을 전달함으로써 구현될 수 있다. 본 발명의 다른 특징은 예를 들어, 인증 서버(2928)를 사용하여 외부 에이전트(2926)를 서비스할 때 보호된 디지털 콘텐트 사용/액세스 제한들(예를 들어, RO들 감소)을 해석 및 시행하기 위한 LSD의 능력을 포함한다. 이런 방식으로, LSD가 임의의 제한들을 시행하기 때문에, 임의의 플레이어 또는 다른 상기 애플리케이션은 레거시 애플리케이션일 수 있다.
채널이 비보안 채널일 수 있다(즉, 인증되지 않은 플레이어들이 모바일 환경에서 처럼 디지털 콘텐트를 플레이할 수 있다)는 것을 주의하고 상기 경우 사용 제한들은 LSD에 의해 적용될 수 있다(예를 들어, 2번 플레이 또는 1월 1일부터 플레이 등). 대안적으로, 채널은 보안 채널일 수 있고(즉, 예를 들어, 플레이어 증명서들이 스트리밍 서버에 의해 인식될 수 있는 상호 인증이 있다), 상기 경우 LSD는 또한 '액세스 제한들'을 시행할 수 있다(예를 들어, 주어진 인증된 플레이어만이 콘텐트를 플레이할 수 있다). 통상적으로, 모바일 환경에서, 비보안 채널은 종종 DRM 타입 시스템에서 고유한 장점들을 유지하면서(의미론적 RO 사용 같은) 보안 및 다른 고려 사항 측면들에서 충분하다. 이런 방식으로, 종래 기술과 달리, 본 발명은 대부분(모두가 아닌)의 콘텐트 제공자 제한들을 유지하면서 HD 플랫폼에 독점 소프트웨어를 통합시키지 않고 레거시 플레이어들의 세계 및 폐쇄/독점 DRM 시스템들 사이에 링크하기 위한 능력을 제공한다.
데이터 패킷(2922)을 프로세싱하도록 배열된 외부 에이전트(2926)는 외부 에이전트(2926-1)로서 원격으로, 또는 로컬 에이전트들(2926-1)로서 로컬적으로 배치될 수 있다. 이 예에서, 로컬 에이전트(2926-2)는 HD(202) 내에 배치될 수 있다. 원격 에이전트(2926-1)는 스트리밍 채널(2924)에 의해 데이터 패킷(2922)을 수신할 수 있다. 특히 유용한 실시예에서, 원격 에이전트(2926-1)는 인증된 에이전트일 수 있다. 인증된 은 원격 에이전트(2926-1)가 데이터 패킷(2922)을 성공적으로 프로세싱하도록(인크립트되거나 되지 않음) 적합한 증명서들을 소유한다는 것을 의미한다. 적합한 인증서들은 당업자에게 잘 공지된 임의의 수의 방식으로 획득될 수 있다. 인증 및 인증 서버(2928)는 예를 들어, 데이터 패킷(2922)을 프로세스하도록 요구된 적합한 증명서들을 제공할 수 있다. 상기 서버들은 원격으로(네트워크 226 또는 다른 로컬 장치 내 같은) 또는 서버(2928)처럼 로컬적으로 배치될 수 있다. 기술된 실시예에서, 애플리케이션(2926)을 위한 증명서들은 오프-대역 획득될 수 있다. 로컬 인증/인증 서버(2928)는 임의의 사용/액세스 제한들을 시행(예를 들어, 감소)할 수 있다. 어느 경우나, 액세스 제한이 LSD에 의해 시행될 때, 적합한 증명서들을 소유하는 에이전트들만이 데이터 패킷(2922)을 프로세싱할 수 있다. 이런 방식으로, 보호된 디지털 콘텐트의 제공자는 임의의 보호된 디지털 콘텐트가 적합한 증명서들을 갖는 사용자들에게만 이용될 것이 보장될 수 있다. 대부분의 실시예에서, 애플리케이션(2926)은 HD(202)에서 작동하는 로컬 디지털 미디어 플레이어/렌더러 형태를 가지며 스트리밍 표준들(예를 들어, RTP/RTSP)을 따른다. 그러므로 애플리케이션(2926)은 HD(202) 내에 임의의 DRM 소프트웨어의 부가를 요구하지 않고 보호된 디지털 콘텐트를 플레이/렌더할 수 있다. 또한, 대부분, 부가적인 보안은 모바일 환경에서 에이전트(2926)에 대해 요구되지 않을 수 있고 이에 따라 레거시 플레이어들의 사용이 인에이블되고, 상기 경우 만약 상호 서버/플레이어 인증이 없다면, 사용 제한들 만이 LSD에 의해 시행될 수 있다.
이런 방식으로, 본 발명은 보호된 디지털 콘텐트의 보안 분배 및 소비에 대한 해결책을 제공한다. 유리하게, 보호된 디지털 콘텐트는 콘텐트 제공자 요구조건들을 만족시키기 위해 '아트 보안 상태'와 호환을 유지하면서 레거시 플레이어들/플랫폼들에 의한 가장 넓은 허용(즉, 부가적인 소프트웨어를 부가하거나 통합할 필요 없이)을 동시에 가지며 사용자 제어 하에 로컬적으로 저장될 수 있다.
본 발명의 특정 실시예는 연관된 관리 호스트 장치에 의해 알 수 있는 바와 같이 로컬 저장 장치의 저장 능력의 원격 인에이블 가상 확장을 제공한다. 로컬 저장 장치들의 원격/사용자-제어 확장의 개념이 지금 새롭지 않지만, 본 발명은 새롭고 혁신적 방법을 제공한다. 일반적으로, 모든 비-휘발성 저장 장치들은 정적으로 미리-결정된 물리적 메모리 어레이를 포함한다. 그러나, 메모리 어레이의 일부는 일반적으로 호스트 장치 파일 시스템으로부터 숨겨지고 결과적으로 호스트 장치 및 궁극적으로 사용자로부터 숨겨진다. 종래의 실행들에서, 제조된 메모리 어레이의 크기는 제조시 결정되고 따라서 미리-결정된 숨겨진 용량의 한계들을 넘는 메모리 어레이의 물리적 저장 용량을 추가로 확장시키기 위한 사용자 능력은 없다; 즉, 메모리 어레이의 총 저장 용량에 융통성이 없다. 대조하여, 본 발명의 목적은 호스트 장치의 호스트 장치 파일 시스템에 의해 인식된 바와 같이 로컬 저장 장치의 저장 용량의 융통성 있는 확장을 제공하는 것이다.
비록 임의의 적합한 저장 장치들이 특정 실시예의 다음 설명에서 사용될 수 있다는 것이 고려되지만, 저장 장치들은 비-휘발성 저장 장치들일 것이라 가정된다. 그러나, 본 발명은 또한 휘발성 저장 장치들 상에서 실행될 수 있다. 예를 들어, 비-휘발성 저장 장치들은 FLASH 또는 EEPROM 기반 저장 장치들일 수 있다. 저장 장치들은 또한 제거 가능한 또는 비-제거 가능한(고정된) 장치들일 수 있다. 잘 공지된 바와 같이, 비-제거 가능한 장치들은 호스트와 접속되면 호스트로부터 추후 제거가 의도되지 않고 반면 제거 가능한 장치들은 호스트에 쉽게 제거 또는 부가되도록 구성된다.
본 발명을 실행하는데 적합한 하나의 타입의 제거 가능한 장치는 메모리 카드이다. 메모리 카드들은 여러 전자 제품들에 사용하기 위한 디지털 데이터를 저장하기 위해 일반적으로 사용된다. 메모리 카드는 종종 저장된 디지털 데이터가 휴대용일 수 있도록 전자 시스템으로부터 제거할 수 있다. 메모리 카드들은 비교적 소형의 팩터를 가질 수 있고 카메라, 미디어 플레이어/레코더(예를 들어, MP3 장치), 핸드-헬드 또는 노트북 컴퓨터, 퍼스널 디지털 어시스턴트(PDA), 휴대 전화, 네트워크 카드, 네트워크 기구, 셋톱 박스, 및 핸드-헬드 또는 다른 장치 같은 데이터를 획득하는 전자 제품에 대한 디지털 데이터를 저장하기 위해 사용된다.
여기에 기술된 로컬 저장 장치는 오디오, 비디오, 또는 픽쳐 파일들 같은 디지털 미디어를 관리하기 위해 사용된 보안 디지털(SD) 메모리 카드 포맷 같은 임의의 메모리 카드 포맷과 호환할 수 있다. 저장 장치는 멀티 미디어 카드(MMC) 메모리 카드 포맷, 컴팩트 플래시(CF) 메모리 카드 포맷, 플래시 PC(예를 들어, ATA 플래시) 메모리 카드 포맷, 스마트-미디어 메모리 카드 포맷, 또는 임의의 다른 산업 표준 사양들과 호환할 수 있다. 이들 메모리 카드들의 하나의 공급자는 캘리포니아주 밀리타스의 샌디스크 코포레이션이다. 저장 장치는 전기적-소거 가능 및 프로그램 가능 판독-전용 메모리들(EEPROM), EPROM, MRAM, FRAM 강유전체 및 자기 메모리들을 포함하지만, 이것으로 제한되지 않는 다른 소거 가능한 프로그램 가능 메모리 기술들에 적용할 수 있다. 저장 장치 구성이 제거 가능한 메모리 타입에 좌우되지 않고, 플래시 메모리이든 다른 타입의 메모리이든 임의의 타입의 메모리로 실행될 수 있다. 저장 장치는 또한 일회 프로그램 가능(OTP) 메모리 칩 및/또는 3차원 메모리 칩 기술로 실행될 수 있다.
상기 메모리 카드들이 사용되는 호스트 시스템들은 퍼스널 컴퓨터들, 노트북 컴퓨터들, 핸드헬드 컴퓨팅 장치들, 휴대 전화들, 카메라들, 오디오 재생 장치들, 및 제거 가능한 데이터 저장 장치를 요구하는 다른 저장 장치를 포함한다. 플래시 eeprom 시스템들은 호스트 시스템들 내에 내장된 벌크 대량 저장 장치로서 사용된다. 저장 장치는 PDA(퍼스널 디지털 어시스턴트), 모바일 핸드세트 및 다른 여러 전자 장치에서 실행될 수 있는 로컬 프록시 시스템의 일부일 수 있다. PDA는 통상적으로 일부를 열거하여 어드레스 북, 데일리 오거나이저, 및 전자 노트패드들 같은 여러 퍼스널 정보 관리 애플리케이션들로 실행되는 사용자-헬드 컴퓨터 시스템으로 공지된다.
다음 설명에서 명확하게 되는 바와 같이, 마스터 장치 제공 물리적 응답을 개시하기 위한 슬레이브 장치의 능력은 유리하게 마스터 장치에 부가적인 이익을 제공하도록 유리하게 이용될 수 있다. 예를 들어, 본 발명에 따라, 제 1 슬레이브 장치는 마스터 장치가 제 1 슬레이브 장치 및 제 2 슬레이브 장치 사이에 통신 경로를 설정하게 하는 마스터 장치 제공 물리적 응답을 개시할 수 있다. 슬레이브 장치들이 저장 장치들인 특정 실시예에 따라, 마스터 장치는 제 1 저장 장치에 전송된 마스터 장치 명령에 의하여 저장 동작을 개시할 수 있다. 비록 마스터 장치 명령이 항상 적어도 마스터 장치 명령에 대한 임의의 응답이 제 1 저장 장치를 통하여 마스터 장치로 전송되는 제 1 저장 장치에 의해 "서비스"되지만, 제 1 저장 장치는 부분적으로 자체적으로 요청된 저장 동작을 실행할지 여부를 명령을 기초하여 결정하고, 제 1 저장 장치의 명령으로 설정된 통신 경로에 의해 제 2 저장 장치에 명령을 포워딩하고, 이 시점에서 제 2 저장 장치는 요청된 저장 동작을 자체적으로 실행할 수 있다. 게다가, 제 1 및 제 2 슬레이브 장치들 사이에 통신 경로 및 논리 상호작용의 설정은 마스터 장치의 파일 시스템으로부터 숨겨질 수 있다.
도 13은 본 발명의 실시예에 따른 컴퓨팅 시스템(200)을 도시한다. 시스템(200)은 로컬 저장 장치(LSD)(204) 형태를 갖는 슬레이브 장치를 포함한다. 시스템(200)은 호스트 장치(HD)(202) 형태를 갖는 마스터 장치를 또한 포함한다. LSD(204)는 HD/LSD 인터페이스(206)를 통해 HD(202)와 통신할 수 있다. HD(202) 및 LSD(204)가 기계적으로 접속할 수 있는 기계적 엔티티(소켓 또는 상호접속 버스 같은)로서 HD/LSD 인터페이스(206)가 구성될 수 있다는 것이 주의된다. 그러나, 몇몇 실시예에서, HD/LSD 인터페이스(206)는 무선 인터페이스 형태를 가질 수 있다. HD(202)가 필수적으로 프로세서를 포함하지만, 간략화를 위해 HD(202)에 포함된 프로세스는 이 논의에서 추가로 도시 및 언급되지 않고, 그러나, 존재되는 것이 가정된다. 많은 실시예에서, LSD(204)는 HD(202)에 의해 제공된 인터페이스 외에 HD(202) 외부의 장치에 대한 임의의 인터페이스를 사용하지 않는다. 다른 말로, LSD(204)는 HD(202)에만 접속될 수 있고 그러므로 HD(202)에 의한 개입 없이 컴퓨팅 시스템(200) 외부의 회로들 및/또는 애플리케이션들에 액세스하거나 그렇지않으면 통신할 수 없다.
HD(202)는 LSD 드라이버(210)와 통신하는 호스트 장치 파일 시스템(HDFS)(208)을 포함한다. 통상적으로, HDFS(208)는 통상적으로 호스트 장치 메인 메모리에 잔류하는 호스트 장치 운영 시스템(HDOS)(216)(하드 디스크 드라이브, 또는 HDD, 및 플래시 메모리 같은 비-휘발성 메모리 형태를 가질 수 있음)의 일부이다. 기술된 실시예에서, HDFS(208)는 LSD 드라이버(210)에 LSD 관리 명령(212)을 발행하도록 구성된다. LSD 드라이버(210)는 차례로 HD/LSD 인터페이스(206)를 통해 LSD(204)에 LSD 관리 명령(212)(적당하게 포맷화됨)을 전달할 수 있다. 예를 들어, LSD 관리 명령(212)은 LSD(204)가 논리적 블록 어드레스(LAB) 아키텍쳐를 갖는 데이터 저장 어레이를 포함하도록 구성되는 경우들에서 블록 명령 형태를 가질 수 있다. HD(202)는 (내부) 소프트웨어 애플리케이션(214)을 또한 포함할 수 있다. 내부 애플리케이션은 소프트웨어 애플리케이션(214)이 HDFS(208) 및 LSD 드라이버(210)를 사용하여 LSD(204)와 통신하는 것을 의미한다. 기술된 실시예에서, 소프트웨어 애플리케이션(214)은 LSD(204)와 통신하기 위하여 HDFS(208) 및 LSD 드라이버(210)를 사용할 수 있고 그러므로 HDFS(208)에 "보여질" 수 있다.
시스템(200)은 또한 적어도 제 2 저장 장치를 포함한다. 제 2 저장 장치는 로컬적으로 또는 원격으로 임의의 수의 위치들에 잔류할 수 있다. 일 실시예에서, 제 2 저장 장치는 인터페이스(223)를 통해 HD(202)에 결합된 제 2 LSD(222) 형태의 외부 장치이다. 다른 실시예에서, 제 2 저장 장치는 네트워크 인터페이스(230)에서 네트워크 링크(228)를 통해 HD(202)와 통신하는 네트워크(226)에 포함된 원격 장치(224)일 수 있다. 이런 방식으로, 네트워크 링크(228)를 사용하는 명령 경로는 정보가 전달될 수 있는 원격 장치(224) 및 HD(202) 사이에 설정될 수 있다. 다른 실시예에서, 제 2 저장 장치는 HD(202) 내에 내장된 비-제거 가능 장치일 수 있다.
기술된 실시예에서, 네트워크 인터페이스(230)는 네트워크 링크(228)를 통해 HD(202)와 네트워크(226) 사이에 통신을 추진한다. 예를 들어, 네트워크(226)가 IP 프로토콜 타입 네트워크이면, 네트워크 인터페이스(230)는 예를 들어, 애플리케이션(214) 및 네트워크(226)에 포함된 임의의 네트워크 장치, 예를 들어, 원격 장치(224) 사이에 IP 프로토콜 바탕 네트워크 링크(228)를 설정할 수 있다. 네트워크 인터페이스(230)가 물리적으로 적합한 곳 어디에도 배치될 수 있다는 것이 주의된다. 예를 들어, 네트워크 인터페이스(230)는 HD(202)에 통합될 수 있다. 그러나, 네트워크 인터페이스(230)는 또한 HD(202)(또는 시스템 200) 내에 포함되는 것이 아니고 네트워크(226)와 적합한 네트워크 링크(228)를 설정하기 위하여 HD(202)에 의해 여전히 사용되는 임의의 물리적 위치에 배치될 수 있다. 그러므로 네트워크 인터페이스(230)는 HD(202)에 근접하여 또는 그 내부에 물리적으로 통합되는 것으로 제한되지 않는다.
마스터 장치 에이전트(132)는 마스터 장치 에이전트(132)에 관한 상기된 기능들 외에, LSD(204)에 의해 제공된 저장 서비스들 및 임의의 이용 가능한 외부 자원들 사이의 적어도 브리지 기능을 제공하는 호스트 장치 에이전트(234) 형태를 가질 수 있다. 기술된 실행에서, 호스트 장치 에이전트(234)는 임의의 적합한 수단(폴링 또는 인터럽트들 같은)에 의하여 LSD 논리 요청을 식별하기 위해 사용될 수 있다. 게다가, 호스트 장치 에이전트(234)는 일단 설정되면 외부 장치(222) 또는 원격 장치(224) 및 LSD(204) 같은 외부 장치에/외부 장치로부터 통신 경로를 라우팅 및/또는 유지하기 위하여 구성될 수 있다.
LSD(204)는 적어도 제 1 대량 저장 영역(240)을 갖는 저장 어레이(238) 및 제어기(236)를 포함한다. 저장 어레이(238)가 메모리 셀들의 어레이(플래시 같은)로 형성될 수 있다는 것이 주의된다. 기술된 실시예에서, 비록 저장 어레이(238)이 플래시 메모리 셀들의 어레일 것으로 가정될 수 있지만, 본 발명은 본 발명이 임의의 적합한 타입의 메모리 셀이 사용될 수 있다는 것이 고려되는 바와 같은 플래시 타입 메모리 셀들로만 제한되지 않는다. 제어기(236)에는 적어도 호스트/LSD 패러다임(106)에 따라(즉, HDFS 208의 명령으로 작동하고 HDFS 발행 명령들에 따르는) 대량 저장 영역(240)을 관리할 수 있는 플래시 관리자(243)이다. 보다 특히, 플래시 관리자(243)는 물리적/어레이 레벨 플래시 명령들을 논리적 블록/섹터 레벨 명령들로 번역하고 그리고 그 반대로도 번역하도록 구성될 수 있다. 제어기(236)는 또한 기술된 실시예에서 플래시 관리자(243)의 일부일 수 있는 맵핑 모듈(245)(이하에 보다 상세히 기술됨)을 포함한다. 특히 유용한 배열에서, 저장 어레이(238)는 LBA 기반 대량 저장 영역을 포함할 수 있다. LBA 기반 대량 저장 영역은 차례로 대량 저장 영역(240)을 포함할 수 있다. 이런 방식으로, 대량 저장 영역(240)은 레거시 설치 베이스와 호환할 수 있다. 따라서, 대량 저장 영역(240)에 저장된 데이터 블록들의 위치는 각각의 블록이 예를 들어, 각각 512 또는 1024 바이트들 정도일 수 있는 경우 논리적 블록 어드레싱(LBA)를 사용하여 지정될 수 있다. 이런 방식으로, 대량 저장 영역(240)은 임의의 고려된 레거시 대량 저장 아키텍쳐들(즉, 레거시 호스트들과 관련하여 작동할 수 있음) 및 보다 특히 LBA 타입 시스템들과 완전히 역방향 호환할 수 있다. 특히, LSD(204)(및 특히, 대량 저장 영역 240)는 레거시 제품들의 설치된 베이스와 완전히 호환성을 제공하기 위하여 레거시 인터페이스들, 버스들, 및 모든 연관된 프로토콜들을 사용하여 표준 LBA 아키텍쳐 하에서 동작할 수 있다.
제어기(236)는 또한 호스트 장치 에이전트(234)를 통하여 플래시 관리자(243), 및 특히 맵핑 모듈(245), 및 외부 저장 장치(222) 또는 원격 장치(224) 사이에서 제어기(236)의 명령으로 통신 경로(256)를 설정하는 브리지로서 작동할 수 있는 LSD 에이전트(244)를 포함한다. 이런 통신 경로(256)가 HDFS(208)를 통하여 라우팅되는 것이 아니고 따라서 HDFS(208)에 보이지 않을 수 있다는 것이 주의된다. 여러 실시예에서, LSD 에이전트(244)가 저장 영역(240) 상에서 여러 저장 동작들(예를 들어, 판독 동작)을 수행할 수 있고 게다가 대량 저장 영역(240) 내에 저장된 데이터와 연관된 파일 시스템 구조 및 메타데이터를 인식할 수 있다는 것이 주의된다. 상기 파일 구조 인식은 파일 할당 테이블 내의 데이터를 포함하는 대량 저장 영역(240) 내에 저장된 파일 메타데이터를 판독 및 횡단하기 위하여 LSD 에이전트(244)를 구성함으로써 실행될 수 있다.
LSD 에이전트(244)는 몇몇 실시예에서 표준 프로토콜들(인터넷 프로토콜, 또는 IP 같은) 및 임의의 이용 가능한 네트워크 자원들을 사용하여 외부 장치들 및/또는 타깃 애플리케이션들과 통신하도록 제어기(236)에 메커니즘을 제공하는 제어기(2360의 일부일 수 있다. 특히, LSD(204)는 HD/LSD 인터페이스(206)의 LBA 기반 실행에 적합한 방식으로 명령들(메시지 페치 같은)을 호스트 장치 에이전트(234)가 실행하게 하기 위하여 임의의 네트워크 통신(LSD 논리 요청 130 같은)을 표준 포맷(물리적 버스-기반 포맷 같은)으로 번역할 수 있다. 이런 방식으로, 임의의 페치된 메시지는 예를 들어, 호스트 장치 에이전트(234) 및 외부 장치 사이에 생성된 네트워크 링크(228)를 통하여 성공적으로 전달될 수 있다. 이와 관련하여, 네트워크 스택/인터페이스(248)는 LSD 에이전트(244)의 일부인 것으로 고려될 수 있다. LSD 에이전트(244)는 제어기(236)에서 벗어나고, 임의의 그 다음 서비스 요청을 관리할 수 있는 인증 및 보안 서비스를 LSD 애플리케이션(250)에 제공할 수 있다.
대량 저장 영역(240)이 별개의 내부 영역들로 분할될 수 있다는 것이 인식될 것이다. 이들 분할된 영역들은 서로 작용할 수 있고 및/또는 임의의 적합한 방식으로 LSD(204) 외부의 회로들 및/또는 소프트웨어 애플리케이션들을 상호작용시킬 수 있도록 각각 작동될 수 있다. 상기 외부 회로는 예를 들어, HD(202)(호스트 파일 시스템 208 같은 내부의 모든 컴포넌트들을 포함함), 외부 LSD(222), 또는 원격 장치(224) 같은 네트워크(226)에 포함된 임의의 수의 외부 장치를 포함할 수 있다.
HDFS(208)가 저장 어레이(238)의 대량 저장 영역(240)을 효과적으로 관리하는 동안, 플래시 관리자(243)는 HDFS(208) 및 물리적 메모리 어레이 사이의 자동 중계 층으로서 사용한다. 보다 특히, 플래시 관리자(243)는 논리적 어드레스들/유니트들(예를 들어, 클러스터들)을 목표로 하는 HDFS(208)로부터 수신된 명령들을 대량 저장 영역(240) 내의 물리적 어드레스들/유니트들(예를 들어, 블록들, 페이지들 등) 상에서 수행되는 작용들로 번역한다. 기술된 실시예에서, HDFS(208)는 플래시 관리자(243)를 통하여 클러스터들이라 지칭되는 논리적 영역들 형태에 데이터를 저장한다. 하나 또는 그 이상의 클러스터들은 LSD(204)에 의해 저장될 각각의 파일에 할당된다. 당업자는 클러스터가 파일에 할당될 수 있는 메모리 공간의 가장 작은 단위이고 모든 파일에 정수의 클러스터들이 할당되어야 하는 것을 인식할 것이다. 또한 특정 파일이 인접한 클러스터들에 저장되는 것이 요구되지 않는 것을 주의해야 한다. 실제로, 특정 파일을 저장하기 위해 사용된 클러스터들은 종종 물리적 메모리 어레이를 통해 종종 확산된다. 다른 말로, 파일들은 일반적으로 파일이 보다 작은 부분들로 분할되어 이용 가능한 메모리 어레이에 걸쳐 저장된다는 점에서 "분해된다". 비록 클러스터가 종래의 대량 저장 시스템들 내 주어진 파일에 할당될 수 있는 가장 작은 단위의 메모리 공간이지만, 파일 시스템에 의해 논리적으로 어드레스할 수 있는 메모리 어레이의 가장 작은 저장 세그먼트는 섹터라 지칭된다. 다중 섹터들은 클러스터를 형성한다. 종래의 시스템들에서, 각각의 섹터는 512 바이트들의 데이터까지 저장할 수 있다. 당업자는 단일 물리적 블록이 반복적으로 오버라이트될 때 플래시 메모리 장치들이 특히 손상되기 쉽다는 것을 인식할 것이다. 따라서, LSD 드라이버(210) 및/또는 플래시 관리자(243)가 대량 저장 영역(240)을 통하여 평균적으로 고르게 기입 동작을 확산시키는 것이 일반적으로 바람직하다.
기술된 실시예에서, HDFS(208)는 대량 저장 영역(240)을 관리하기 위하여 파일 할당 테이블(FAT)(255)을 사용한다; 그러나, 대안적인 실시예에서 HDFS(208)는 FAT 기반 파일 시스템이 아닐 수 있다. 예를 들어, 다른 실시예에서, HDFS(208)는 여러 가지 중에서 ext2, ext3, NTFS 및 JFFS를 기반으로 하는 파일 시스템일 수 있다. 따라서, 본 발명이 다른 파일 시스템들로 실행될 수 있지만, 다음 설명은 FAT 기반 파일 시스템 실시예에 집중한다. 예를 들어, FAT 파일 시스템은 종래에 공지된 FAT-16 또는 FAT-32 파일 시스템일 수 있다. FAT(255)는 임의의 다른 데이터로서 대량 저장 영역(240)에 저장될 수 있다. FAT(255)는 LSD(204)에 의해 저장된 파일들의 논리적 위치(들)를 추적하는 데이터베이스로 고려될 수 있다. 그러나, 몇몇 실시예에서 LSD(204)에 의해 저장된 모든 파일들이 FAT(255)로 추적될 수 없다는 것을 주의해야 한다; 즉, 저장 어레이(238)에 저장된 몇몇 파일들은 HDFS(208)에 의해 관리될 수 없고, 따라서 이들 영역들에 저장된 임의의 데이터는 HDFS(208)에 보이지 않을 것이다. 예를 들어, HDFS(208)로부터 특정 데이터를 숨기는 것이 바람직할 수 있고 따라서 이 데이터는 HDFS(208)에 의해 관리되지 않은 메모리 어레이(238) 부분에 저장될 수 있다. 그러나, HDFS(208)에 의해 관리되는 파일들에 대해(예를 들어, 대량 저장 영역 240 내의 것), FAT(255)는 각각의 파일에 할당/배당된 섹터들 및 클러스터들의 논리적 어드레스들을 추적한다. 예를 들어, 각각의 HDFS 관리 파일들은 FAT(255) 내 대응 디렉토리 엔트리 또는 메모리 어드레스를 가진다. HDOS(216) 또는 호스트 장치 애플리케이션 같은 운영 시스템(OS) 또는 소프트웨어 애플리케이션은 파일 내 데이터가 논리적으로 배치된 장소를 결정하기 위하여 FAT(255)에 액세스할 수 있다. 특히, FAT(255) 내 각각의 파일 엔트리는 특정 파일에 할당된 대응 클러스터들의 클러스 번호들을 포함한다. 각각의 클러스터 엔트리는 또한 파일에 의해 사용된 다음 클러스터에 현재 클러스터를 링크하는 클러스터 번호를 포함한다. 사용되지 않은 각각의 클러스터는 통상적으로 FAT(255) 내 대응 클러스터 엔트리 내에서 영 또는 몇몇 다른 미리 결정된 값으로 마킹된다. 이것은 클러스터가 비어있고 할당을 위해 이용 가능하다는 것을 OS 또는 다른 애플리케이션에게 경고한다. 이런 방식으로, FAT(255)는 특정 파일이 어느 클러스터들에 저장되고 또한 어느 클러스들이 사용을 위해 이용 가능한가를 HDFS(202)에게 알릴 수 있다. 이런 방식으로, HDFS(208)는 LSD(204)의 이용 가능한 총 저장 용량들을 조사할 수 있다.
본 발명의 특정 실시예에 따라, FAT(255)에서 식별된 메모리 어드레스들은 클러스터들과 연관되고 차례로 둘 또는 그 이상의 섹터들 세트와 연관된다. 예를 들어, LSD(204) 내의 제 1 저장 영역(240) 내에 물리적 배치된 섹터들(이후 실제 섹터들이라 함)과 연관된 논리 어드레스들은 논리 어드레스들의 제 1 세트(X)를 나타낼 수 있다. 하나의 특정 실시예에서, 논리 어드레스들의 제 1 세트(X)는 FAT(255)에서 식별된 연속적인 논리 어드레스들의 고정된 범위에 대응할 수 있다. 대표적인 실시예에서, 제 1 범위(X) 내 모든 논리적 어드레스들은 제 1 저장 영역(240) 내에 물리적으로 배치된 실제 섹터들과 연관된다. 또한, FAT(255)는 외부 LSD(222) 또는 원격 장치(224) 같은 외부 장치 내 예를 들어, 세트(Y) 같은 LSD(222) 외부 장치들 내 저장 어레이들에 물리적으로 배치된 섹터들의 하나 또는 그 이상의 다른 세트들(또는 몇몇 실시예에서 범위들)과 연관된 클러스터들을 포함할 수 있다. LSD(204) 외부 장치 내 섹터들은 가상 섹터들이라 지칭될 수 있다. 따라서, 이 실시예에서, HDFS(208)에 이용할 수 있는 섹터들은 세트들(X 및 Y) 모두를 포함한다.
특정 실시예에 따라, HDFS(208)는 X 및 Y 사이를 구별 짓지 않을 수 있다; 즉, HDFS는 논리 어드레스들의 세트들(X 및 Y)이 LSD(204)의 대량 저장 영역(240) 내에 물리적으로 배치된 모든 섹터들과 연관된다는 것을 인식한다. 보다 특히, FAT(255) 내에서 식별된 클러스터들과 연관된 여러 섹터들의 물리적 위치들은 FAT(255)를 통하여 이용 가능하지 않고, 따라서 HDFS(208)에 공지되지 않는다. 결과적으로, HDFS(208)에 의해 알 수 있는 바와 같은 인식된 저장 용량(가상 저장 용량이라 지칭됨)은 실제로 각각 외부 장치 및 LSD(204) 내의 세트들(X 및 Y)의 논리 어드레스들과 연관된 실제 및 가상 섹터들의 결합된 저장 용량들의 합이다. 따라서, LSD 저장 영역(240) 내에 물리적으로 배치된 실제 섹터들의 저장 용량이 고정되지만, FAT(255)를 판독함으로써 HDFS(208)에 의해 결정되는 인식된 저장 용량은 외부 장치 내에 물리적으로 배치된 가상 섹터들을 포함하도록 효과적으로 확장되었다.
기술된 실시예에서, 맵핑 모듈(245)은 로컬 실제 섹터들 또는 외부 가상 섹터들과 특정 논리적 섹터들을 맵핑하거나 연관시키도록 구성된다. 즉, 맵핑 모듈(245) 및/또는 플래시 관리자(243)는 대량 저장 영역(240) 내 또는 외부 장치에 물리적으로 잔류하는 저장 영역 내 실제 물리적 어드레스들(즉, 블록들, 페이지들 등)과 특정 논리적 섹터 번호들과 연관된 실제 및 가상 섹터들을 연관시킨다. 따라서, 몇몇 특정 실시예에서, 클러스터 레벨에서의 논리적 어드레스들을 목표로 하는 HDFS(208)로부터 수신된 명령들은 논리적 섹터 번호들로 번역될 수 있고 차례로 맵핑 모듈(245)에 의해 각각 대량 저장 영역(240) 및 외부 장치 내의 실제 및 가상 섹터들과 연관된 물리적 어드레스들/단위들(즉, 블록들, 페이지들 등등) 상에서 수행된 작용들로 번역될 수 있다. 일 실시예에서, 클러스터 레벨 어드레스들로부터 섹터 레벨 어드레스들로 번역은 플래시 관리자(243)에 의해 수행될 수 있다. 다른 실시예에서, 이런 번역은 HDFS 자체에 의해 수행될 수 있다.
여러 바람직한 실시예에서, 맵핑 모듈(245)이 가상 섹터들에 저장된 데이터 대 실제 섹터들에 저장된 데이터의 비율을 동적으로 변경할 수 있는 것을 주의해야 한다. 보다 특히, 특정 파일과 연관된 데이터를 포함하는 특정 콘텐트 및 FAT(255) 자체의 파일 및 심지어 일부들과 연관된 메타데이터에 대한 실제 및 가상 섹터들의 할당을 동적으로 조절하는 것은 바람직할 수 있다. 즉, 예를 들어, 데이터는 맵핑 모듈(245)의 명령으로 외부 장치 내의 하나 또는 그 이상의 가상 섹터들로부터 저장 영역(240) 내 하나 또는 그 이상의 실제 섹터들로 전달될 수 있고 그 반 대도 가능할 수 있다. 그러나, 바람직한 실시예에서, 이런 재할당은 FAT(255)의 업데이팅이 필요하지 않을 때 HDFS(208)에 보이지 않는다.
하나의 특정 실시예에서, 맵핑 모듈(245) 및/또는 LSD 에이전트(244)는 HDFS(208)에 알려지지 않은 실제 및/또는 가상 섹터들과 FAT(255) 내에서 식별된 클러스터들을 연관시키는 별개의 맵핑 테이블(356)을 부가적으로 유지할 수 있다. 이것은 예를 들어, 맵핑 모듈(245)이 동일한 클러스터 또는 파일에 속하는 섹터들에 데이터를 사전-페치 및 캐시(즉, HDFS 208로부터 특정 명령 없이)하도록 구성되는 실시예들 같은 몇몇 최적화 레벨이 바람직한 실시예에서 바람직할 수 있다.
다시, 특정 실시예에 따라, 실제로, FAT(255)에서 식별된 클러스터들이 대량 저장 영역(240) 내 물리적 어드레스들에 대응하는 실제 섹터들 및 외부 장치들 내 잔류하는 물리적 어드레스들에 대응하는 임의의 가상 섹터들 모두와 논리적으로 연관될 수 있을 때 HDFS(208)는 대량 저장 영역(240) 내에 잔류하는 섹터들 및 대응하는 물리적 어드레스들과 연관된 FAT(255)에서 식별된 모든 클러스터들을 인식한다. 또한 폭넓게 가변하는 외부 저장 장치들의 번호가 HD(202)와 결합되어 HDFS(208)에 의해 인식되는 바와 같이 LSD(204)으 가상 저장 용량의 확장시 큰 융통성을 허용한다는 것을 주의해야 한다; 즉, LSD(204)의 가상 저장 용량은 대응하는 외부 장치들 내 가상 섹터들과 연관될 수 있는 FAT(255) 내에서 이용 가능한 파일 어드레스 엔트리들이 있는 한 확장될 수 있다. 게다가, LSD 에이전트(244)가 내부 파일 시스템 인식(예를 들어, 파일 구조 및 메타데이터 인식)을 갖는 실시예에서, LSD 에이전트(244)는 그 자신의 클러스터/섹터 맵핑 테이블을 관리할 수 있다.
도 14a는 LSD 에이전트(244) 및/또는 맵핑 모듈(245)이 실제 및 가상 섹터들에 대한 클러스터들의 맵핑을 관리하도록 구성되는 특정 실시예에 따라 맵핑 테이블(3356)의 대표도를 도시한다. 맵핑 테이블(3356)은 맵핑 테이블의 로우(row)들에 의해 표현된 복수의 클러스터 엔트리들(3357)을 포함한다. 각각의 엔트리(3357)는 복수의 섹터 엔트리들(3358)을 포함한다. 도 14a에 도시된 실시예에서, 특정 클러스터 엔트리(3357)는 예를 들어, 대량 저장 영역(240) 내에서 서로 물리적으로 인접하거나 인접하지 않을 수 있는 엔트리들(RS1 및 RS2), 및 동일한 외부 장치 내에 잔류하거나 잔류하지 않을 수 있는 엔트리들(VS1 및 VS2)에 의해 표현된 가상 섹터들 모두와 연관될 수 있다. 따라서, 엔트리(3357)에 의해 표현된 클러스터는 실제 섹터들(RS1 및 RS2)을 통하여 저장 어레이(240)에 저장되고 섹터들(VS1 및 VS2)을 통하여 하나 또는 그 이상의 외부 장치들 내에 잔류하는 저장 영역들 내의 데이터를 포함한다. 즉, 도시된 실시예에서, 특정 클러스터와 연관된 모든 섹터들이 실제 섹터들을 통하여 전체적으로 로컬적으로 저장되거나, 가상 섹터들을 통하여 전체적으로 외부에 저장되는 것은 요구되지 않는다.
도 14b는 주어진 범위(예를 들어, 0000 내지 xxxx) 내의 모든 논리적 어드레스들이 실제 섹터들과 연관되고 주어진 범위(예를 들어, yyyy 내지 FFFF) 내 모든 논리 어드레스들이 가상 섹터들과 연관되는 실시예에서 HDFS(208)에 의해 판독된 바와 같이 LSD(204)의 인식된 저장 용량의 표현을 도시한다. 보다 특히, 도 14b는 헥스(hex) 표기법의 메모리 어드레스들 및 메모리 어드레스들과 연관된 물리적 섹터들 사이의 관계를 도시한다. 이 관계가 하나의 특정 실시예의 대표도라는 것을 주의해야 하고, 여러 대안적인 실시예에서, 주어진 논리 어드레스 및 연관된 클러스터(들) 사이의 관계 및 주어진 클러스터 및 대응 섹터들 사이의 관계는 동적으로 변화될 수 있다. 전체 박스(3360)는 LSD(204)의 인식된 저장 용량을 나타낸다. 도시된 실시예에서, 박스(3360)의 상부 부분(3362)은 예를 들어, 저장 어레이(240)의 실제 저장 용량과 연관된 FAT(16) 어드레싱의 경우 메모리 어드레스들, 0000에서 시작하고 몇몇 값 xxxx에서 종료하는 메모리 어드레스들을 나타낸다; 즉, 저장 어레이(240) 내에 배치된 RS1 및 RS2 같은 실제 섹터들. 반대로, 박스(3360)의 하부 부분(3364)은 LSD(204)의 가상 저장 용량과 연관된 FAT(16) 어드레싱의 경우 yyyy(xxxx에서 또는 그 이후)에서 시작하고 FFFF에서 종료하는 메모리 어드레스들을 나타낸다; 즉, 클러스터들은 VC1 및 VC2 같은 외부 장치에 잔류함.
본 발명의 몇몇 특정 실시예들을 도시하기 위해, HD(3502)에서 LSD(3504)로 전송된 LSD(3504)에 의한 관리 명령을 서비스하는 프로세스(3400)는 도 15의 흐름도 및 도 16의 시스템을 참조하여 기술된다. 프로세스(3400)는 HDFS(3508)이 FAT(3555)에 액세스하는 3402에서 시작할 수 있다. 이것은 HDFS(3508)이, HDFS가 가정하는 데이터와 LSD(3504)에 의해 실제로 저장 어레이(3538) 내에 저장된 데이터의 맵핑을 검사하고 추후 저장 동작 동안 논리적 어드레스들을 식별하게 한다. 그러나, 몇몇 경우들에서 FAT(3555)는 HD(3502) 내의 로컬 메모리 내에 미리 캐시될 수 있고 논리적 어드레스들 및 대응 클러스터들은 미리 식별될 수 있다. 이전 경우에서, 플래시 관리자(3543) 및/또는 맵핑 모듈(3545)은 몇몇 실시예에서 논리적 어드레스(들)이 액세싱(3402) 동안 HDFS(3508)에 의해 관심 있다는 것을 결정할 수 있다. 보다 특히, 이들 실시예에서, 맵핑 모듈(3545)은 HDFS(3508)가 저장 동작을 위한 섹터들이 어느 것인지를 식별하고 어느 섹터들이 HDFS(3508)로부터의 추후 명령에 의해 목표로 될 것을 예상할 수 있다.
3404에서, 플래시 관리자(3543)는 원하는 저장 동작을 요청하는 HDFS(3508)로부터 관리 명령(3512)을 수신한다. 예를 들어, 관리 명령(3512)은 판독, 기입 또는 소거 명령 및 저장 동작이 실행되는 연관된 논리적 어드레스들, 및 기입 명령의 경우 논리적 어드레스들에 기입될 데이터를 포함할 수 있다. 몇몇 실시예에서, 명령은 예측될 수 있다(예를 들어, 종래 기술에서 공지된 몇몇 지능성 사전-페칭 메커니즘을 기반으로). 3406에서, 플래시 관리자(3543)는 논리적 섹터 번호들 및 연관된 실제 및 가상 섹터들 사이의 맵핑을 관리/유지하는 응답 지령 신호를 맵핑 모듈(3545)에 내린다. 3408에서, 맵핑 모듈(3545)은 HDFS(3508)에 의해 전송된 명령과 연관된 일부 또는 모든 논리 어드레스들이 LSD(3504) 외부의 장치(3522)(예를 들어, 제 2 LSD, 원격 네트워크 장치, 또는 HD 내에 내장된 비-제거 가능 장치)에 물리적으로 잔류하는 섹터들이라 지칭되는 가상 섹터들(예를 들어, 가상 섹터 VS1 또는 VS2)와 연관되는지를 결정한다. 바람직한 실시예에서, 맵핑 모듈(3545)에 의해 취해진 작용들은 HDFS(3508)와 무관하고 상기 HDFS에 대해 명백하다. 이런 방식으로, HDFS(3508) 또는 LSD 드라이버(3510) 같은 레거시 컴포넌트들에 대한 업데이트들 또는 다른 변화들은 요구되지 않는다. 3408에서 모든 섹터들이 저장 어레이(3538)(예를 들어, 실제 섹터 RS1 또는 RS2)의 대량 저장 영역(3540)에 물리적으로 잔류하는 실제 섹터들인 것이 결정되면, 플래시 관리자(3543)는 3410에서 명령(3512)을 서비스할 수 있다. 특히, 만약 관리 명령(3512)이 실제 섹터들과 완전히 연관되는 것을 맵핑 모듈(3545)이 결정하면, 요청된 저장 동작은 3410에서 실시간으로 이들 타깃 실제 섹터들 상에서 실행될 수 있다. 명령(3512)의 서비스는 또는 일반적으로 LSD(3504)로부터 HDFS(3508)로 응답을 전송하는 것을 포함할 것이다. 상기 응답은 요청된 동작이 실행되었고 및/또는 데이터가 요청된 동작과 연관되는 것의 확인응답을 포함할 수 있다.
그러나, 관리 명령(3512)과 연관된 섹터들의 적어도 일부가 가상 섹터들인 것을 맵핑 모듈(3545)이 3408에서 결정하면, 3412에서, LSD 에이전트(3544)는 통신 경로가 가상 섹터들의 물리적 위치(예를 들어, VS1 및 VS2)를 포함하는 연관된 저장 어레이를 갖는 외부 장치(3522) 및 LSD(3504) 사이에 설정되는지를 결정한다. 통신 경로는 LSD(3504) 및 외부 장치(3522)가 HD(3502)를 통하여 그들 사이에 설정된 수행 가능 명령 경로를 갖는 것을 의미한다. 수행 가능은 설정된 물리적 접속, 설정된 무선 접속, 또는 정보가 전달될 수 있고, 바람직한 실시예에서 HDFS(3508)에 알려지지 않은 LSD 에이전트(3544), 호스트 장치 에이전트 및 인터페이스(3530)를 통해 LSD(3504) 및 외부 장치(3522) 사이에 설정된 논리적 접속이 있다는 것을 의미한다.
도시된 실시예에서, 통신 경로(3556)가 LSD(3504) 및 외부 장치(3522) 사이에 설정되는 것이 3412에서 결정되면, LSD 에이전트(3556)는 3414에서 관리 명령(3512)을 바탕으로 외부 장치(3522)로 관리 명령(3513)을 포워딩하고 복수의 가상 섹터들 상에서 요청된 저장 동작을 외부 장치(3522)가 수행하도록 명령한다. 몇몇 실시예에서 통신 경로(3566)의 설정은 상기된 바와 같이 예측된 관리 명령을 기초로 HDFS(3508)로부터 관리 명령(3512)을 실제로 수신하기 전에 개시될 수 있다. 동시에, 저장 영역(3540)에 대한 몇몇 로컬 캐시 관리 동작이 있을 수 있다. 몇몇 실시예에서, 로컬 캐시(3558)는 저장 영역(3450)의 일부일 수 있지만, 다른 실시예에서 캐시는 저장 어레이(3538) 외부의 RAM 내에 배치될 수 있다. 로컬 캐시(3558)를 관리하는 것이 캐시(3558) 내에 데이터(예를 들어, 기입 동작의 경우 HD 3502로부터 외부 장치 3522로 기입될 데이터 또는 판독 동작의 경우 HDFS 3508에 전송될 외부 장치 3522로부터 LSD 에이전트 3544를 통하여 페치된 데이터)가 로컬적으로 저장될 충분한 저장 룸이 있다는 것을 최적으로 보장하기 위해 플래시 관리자(3543)(및/또는 맵핑 모듈 3545) 및 LSD 에이전트(3544) 사이의 협력을 수반할 수 있다. 충분한 저장 룸은 캐시(3558)로부터 로컬 데이터를 소거하거나, 로컬 캐시(3558)로부터 외부 장치(3522)로 기입될 로컬 데이터를 전달하거나 로컬 캐시(3558)로부터 판독되고 HD(3502)로 전달되는 로컬 데이터를 전달함으로써 실행될 수 있다.
몇몇 실시예에서, LSD 에이전트(3544)는 LSD 에이전트(3544)가 캐시 관리에 몇몇 최적화 레벨을 도입하게 할 수 있는 몇몇 파일 시스템 구조 인식들을 LSD 에이전트(3544가 가질 수 있기 때문에 캐시 관리 동작들에서 수반될 수 있다. 보다 특히, 만약 LSD 에이전트(3544)가 예를 들어, 클러스터가 주어진 파일에 관련된 것을 페치하기 위해 나머지 섹터들을 인식한다면, LSD 에이전트(3544)는 미리 LSD 내의 로컬 캐시(3558) 내에 충분한 저장 능력이 있다는 것을 보장할 수 있다. 파일 시스템 구조 인식은 로컬적으로 유지하고자 하는 캐시(3558) 내에 저장된 현재 콘텐트를 LSD 에이전트(3544)가 식별하게 할 수 있다. 따라서, LSD 에이전트(3544)는 몇몇 레벨의 지능형 캐싱을 수행할 수 있다.
3418에서, 외부 장치(3522)는 관리 명령(3513)에 응답하여(및 간접적으로 관리 명령 3512을 통하여) 가상 섹터들 상 요청된 저장 동작을 실행한다. 외부 장치(3522)에 전송된 제 2 명령(3513)이 제 1 명령(3512)에서 식별된 논리적 어드레스와 연관된 가상 섹터들 상 저장 동작을 수행하도록 외부 장치에 항상 명령할 수 없다는 것을 주의해야 한다. 즉, 몇몇 경우들에서, 비록 관리 명령(3512)에서 식별된 모든 논리적 어드레스들이 실제 섹터들과 연관되지만, 제 1 관리 명령(3512)과 연관되지 않은 대량 저장 영역(3540) 내의 실제 섹터들로부터 외부 장치(3522) 내의 가상 섹터들로 데이터를 기입함으로써 대량 저장 영역(3540) 내 저장 공간을 비우는 것이 바람직할 수 있다. 따라서, 제 2 명령(3513)은 대량 저장 영역(3540) 내의 실제 섹터들로부터의 데이터를 포함하는 기입 명령일 수 있고 실제 섹터들로부터의 데이터를 외부 장치 내의 가상 섹터들에 기입하도록 외부 장치(3522)에게 명령할 수 있다. 또한, 만약 HDFS(3508)에 의해 전송된 관리명령(3512)이 실제 및 가상 섹터들과 연관된 어드레스들을 포함하면, 플래시 관리자(3543)는 관리 명령(3513)을 외부 장치(3522)에 포워딩하는 것과 동시에 및/또는 외부 장치(3522)에 의해 가상 섹터들 상에서 요청된 저장 동작의 실행과 동시에 3410에서 실제 섹터들 상 요청된 저장 동작을 실행할 수 있다.
대안적으로, 특정 실시예에 따라, 3412에서 통신 경로(3556)가 존재하지 않는 것이 결정되면, 3416에서 LSD 에이전트(3544)는 LSD(3504) 및 외부 장치(3522) 사이에 통신 경로(3556)를 설정하기 위해 HD 에이전트(3534)를 통해 HD(3502)를 프롬프트한다. 보다 특히, 도 13의 통신 경로(256)를 참조하여 상기된 바와 같이, LSD(3504)는 예를 들어, 네트워크 인터페이스 또는 로컬 통신 경로를 사용하여 외부 장치(3522)에 대해 통신 경로(3556)를 설정하는 요청 프로세스를 실행하도록 HD(3502)를 프롬프트할 수 있다. 그러나 설정되면, 정보는 HD(3502)에 의한 추가 개입 없이(데이터 패킷 라우팅 같은 데이터 전달과 관련된 임의의 개입 제외) LSD(3504) 및 외부 장치(3522) 사이에서 전달될 수 있고 또한 HDFS(3508)에 보이지 않는다. 일단 통신 경로(3556)가 설정되면, 프로세스는 3414로 진행하고 여기서 관리 명령(3513)은 외부 장치(3522)로 전송되고, 그 시점에서 외부 장치(3522)는 가상 섹터들 상 요청된 저장 동작을 수행할 수 있다.
따라서, 여러 실시예에서, HDFS(3508)에 의해 개시된 단일 명령(3512)의 서비스는 일반적으로 LSD(3504) 내부 및 외부 장치(3522)에 관련하여 복수의 동작을 수반할 수 있다. 상기된 프로세스(3400)가 본 발명의 여러 실시예의 일반적인 실행들을 나타내지만, 다음 설명은 본 발명의 특정 실시예의 보다 특정 실행들을 제공할 것이다.
보다 구체적으로, 관리자 명령(3512)이 기입 명령인 경우, 만약 기입 명령(3512) 내에서 식별된 임의의 논리적 어드레스들이 저장 영역(3540) 내에 잔류하는 실제 섹터들과 연관되면, 데이터는 상기된 바와 같이 3410에서 실시간으로 이들 목표된 실제 섹터들에 기입될 수 있다. 기입 명령이 서비스되는 확인응답을 포함하는 응답은 그 다음 HDFS(3508)에 전송될 수 있다. 그러나, 만약 일부 또는 모든 논리적 어드레스들이 가상 섹터들과 연관되면, LSD 에이전트(3544)는 상기된 바와 같이 외부 장치(3522)에 잔류하는 가상 섹터들의 관련된 물리적 대응부들에 연관된 데이터를 기입하도록 외부 장치(3522)에게 명령하는 HDFS(3508)에게 알려지지 않은 통신 경로(3556)를 따라 외부 장치(3522)에 기입 명령(3513) 및 연관된 데이터를 포워딩한다.
대안적으로, 외부 장치(3522)에 데이터 및 기입 명령(3513)을 포워딩하기 전에 기다리는 것이 바람직할 수 있다. 예를 들어, 특정 미리 결정된 조건들이 부합될 때까지 LSD(3504) 내 캐시(3558) 내에 데이터를 일시적으로 저장하는 것이 유리할 수 있다. 예를 들어, 캐시(3558)에 데이터를 일시적으로 저장하고 미리 결정된 대역폭 레벨이 통신 경로(3556)를 통해 이용 가능할 때까지 캐시된 데이터를 외부 장치(3522)에 포워딩을 기다리는 것이 바람직할 수 있다. 또한, 기입되는 외부 장치(3522)에 데이터를 포워딩하기 전에 미리 결정된 양의 데이터가 캐시될 때까지 기다리는 것이 보다 효과적일 수 있다. 이들 및 다른 고려 사항들에 대해, 기입 명령(3512) 서비스는 우선 일시적으로 데이터를 캐싱하고 기입 명령이 서비스된 것의 확인응답(비록 다른 실시예에서 확인 응답이 HDFS 요구 시간 제한들 내에서 전송되는 한 확인응답이 늦게 전송될 수 있을지라도)을 포함하는 응답을 HDFS(3508)에 전송하는 것을 포함할 수 있다. 서비스는 현재 클럭 윈도우 동안 기입 명령(3512)과 연관된 가상 섹터들에 기입될 데이터(또는 명령 3513 자체)가 외부 장치(3522)에 포워딩되는지 아닌지 여부에 대한 결정을 포함할 수 있다. 동시에, 이런 결정 이전 또는 이후, 플래시 관리자(3543)에 의해 실제 섹터들에 기입될 데이터의 다른 부분들은 3410에 기입될 수 있다. 만약 현재 클럭 윈도우 동안 데이터가 포워딩되면, 데이터는 포워딩되고 외부 장치(3522) 내의 가상 섹터들에 기입된다. 몇몇 실시예에서, 데이터의 포워딩은 점진적으로 수행될 수 있다; 즉, 여러 "청크(chunk)들" 또는 데이터의 일부들은 가능할 때 또는 적합한 것으로 고려될 때 포워딩될 수 있다. 만약 데이터가 현재 클럭 윈도우 동안 외부 장치(3522)에 포워딩되지 못하면, 데이터는 캐시(3558)에 저장될 수 있고 여기서 데이터가 기입될 외부 장치(3522)에 포워딩되어야 하는 것을 제어기(3536)가 결정할 때까지 유지된다.
구체적인 실시예에서, 가상 섹터들에 대해 예정된 데이터 부분이 캐시되면 FAT(3555)가 변형될 필요가 없다는 것을 주의해야 한다. 또한, 일 실시예에서, 플래시 관리자(3543) 및/또는 맵핑 모듈(3545)은 HDFS(3508)에 의해 액세스된 FAT(3555)가 변형되지 않아야 하도록 일시적인 캐시 위치(들)에 가상 섹터 위치(들)를 맵핑할 수 있다. 실제로, FAT(3555)에서 식별된 클러스터들과 연관된 실제 및 가상 섹터들은 일반적으로 저장 영역(3540) 내 또는 외부 장치들 내 동일한 물리적 섹터들에 항상 대응하지 않을 수 있다.
관리 명령(3512)이 판독 명령인 경우, 판독 명령(3512)에서 식별된 임의의 논리적 어드레스들이 저장 영역(3540)에 잔류하는 실제 섹터들과 연관되면, 데이터는 3410에서 실제 섹터들로부터 판독될 수 있고 추후 HDFS(3508)에 전송될 수 있다. 그러나, 만약 논리 어드레스들 일부 또는 모두가 가상 섹터들과 연관되면, LSD 에이전트(3544)는 3414에서 상기된 바와 같이 외부 장치(3522)에 잔류하는 가상 섹터들의 관련 물리적 대응부들로부터 판독하도록 외부 장치(3522)에게 명령하는 HDFS(3508)에게 알려지지 않은 통신 경로(3556)를 따라 외부 장치(3522)에 판독 명령(3513)을 포워딩한다. 외부 장치(3522)로부터 판독된 데이터는 통신 경로(3556)를 따라 LSD(3504)에 포워딩될 수 있고 그로 인해 만약 저장 영역(3540)으로부터 직접 판독되었다면 HDFS(3508)에 포워딩되기 전에 캐시(3558)에 일시적으로 로컬적으로 저장될 수 있다.
LSD(3504)와 HD(3502) 사이에서, 그리고 특히 플래시 관리자(3543)와 HDFS(3508) 사이에서 데이터 관리 및 전달이 타임-아웃들 등등을 포함하는 복수의 제한들에 제출될 수 있다는 것을 주의해야 한다(즉, 일반적으로 SD, MMC 등 같은 레거시 저장 버스들 상에서, HD는 제한된 시간 기간(예를 들어, 기껏 100ms) 내에서 LSD로부터 응답을 수신하기를 기다리고, 그 후 시스템을 재세팅하게 할 수 있는 요청이 중단되도록 하는 것을 고려한다...). 따라서, 종래의 레거시 호스트 장치, 저장 장치 및 버스는 '보장된 응답 시간'을 기초로 데이터를 통신 및 관리하는 동안, LSD(3504)(특히 LSD 에이전트 3544) 및 외부 장치(3522) 사이에서 데이터의 통신 및 전달은 '가장 많은 노력'을 바탕으로 할 수 있다.
한 가지 구체적인 실시예에 따라, 이런 어려움은 지능형 맵핑 및/또는 캐싱의 사용에 의해 완화될 수 있다. 특히, 플래시 관리자(3543) 및/또는 맵핑 모듈(3545)은 실제/가상 섹터 맵핑을 동적으로 관리할 수 있다. 예를 들어, 플래시 관리자(3543) 및/또는 맵핑 모듈(3545)은 파일들은 대부분 일반적으로 사용되고 결과적으로 적어도 사용된 파일들이 외부 장치들의 가상 섹터들에 저장되는 동안 대부분의 일반적으로 사용된 파일들이 저장되는 것을 보장하기 위해 실제 및 가상 섹터들의 할당을 동적으로 변형한다(HDFS 3508에 투명하게 그리고 백그라운드 동작들로서). 즉, 가상 섹터들에 저장된 특정 파일이 높은 사용을 겪으면(예를 들어, 자주 판독됨), 맵핑 모듈(3545) 및 플래시 관리자(3543)는 외부 장치(3522) 내의 가상 섹터들로부터 저장 영역(3540)을 갖는 실제 섹터들로 많이 사용된 파일과 연관된 데이터의 전달을 동적으로 개시할 수 있다. 대안적으로, 많이 판독된 데이터는 캐시(3545) 내에 우선적으로(및 적어도 일시적으로) 저장될 수 있다. 반대로, 빈번하지 않게 액세스된 파일들과 연관된 데이터는 맵핑 모듈(3545) 및/또는 플래시 관리자(3543)의 명령으로 저장 영역(3540) 내의 실제 섹터들로부터 외부 장치(3522) 내의 가상 섹터들로 동적으로 전달될 수 있다.
또한, 몇몇 실시예에서, LSD 드라이버 또는 HDFS(3508)은 융통성이 지원되면 보다 큰 융통성을 허용하도록 구성될 수 있다. 예를 들어, 만약 저장 동작이 저장 인터페이스 표준에 의해 정의된 '보장된 응답 시간' 내에서 수행되지 않을 수 있다면(예를 들어, 외부 장치 3522가 다른 LSD이고 통신이 신속한 경우), 재시도 메시지는 전송될 수 있다. 또한, 서비스 품질(QOS) 패러다임은 설정되어 시간 제한 한정 하에서 LSD(3504) 및 외부 장치(3522) 사이의 데이터 서비싱 및 전달을 허용한다. 예를 들어, QOS 패러다임은 여러 가지 중에서 이용 가능한 대역폭, 전달될 데이터 양, 및 이미 캐시된 데이터 양 같은 팩터들을 포함할 수 있다.
본 발명자들은 호스트 장치(HD)의 연루 없이 LSD의 메모리 어레이 내 데이터를 인덱스하기 위하여 로컬 저장 장치(LSD) 내에 기능성을 제공하는 목표를 구현하였다. 따라서, 예를 들어, LSD의 데이터는 LSD가 다중 HD들에 의해 사용될 때에도 인덱스될 수 있다. 게다가, 모니터링 및 특성화 기능은 기능이 HD 플랫폼과 무관하기 때문에 여러 HD 플랫폼들에 포팅될 필요가 없다. 인덱싱은 LSD의 데이터에 관련한 검색 질문들에 응답하기 위해 사용될 수 있는 데이터 수집부를 생성하는 것을 포함한다. 질문들은 HD 또는 LSD로부터 발생될 수 있다.
인덱싱 결과의 사용은 검색 질문들에 응답하는 것으로 제한되지 않는다. 예를 들어, 인덱싱 결과는 콘텐트 스크리닝(screening)을 위해 사용될 수 있다, 즉 애플리케이션은 LSD의 메모리 어레이 내 인증되지 않은 콘텐트에 대한 액세스를 금지하기 위하여 "폰(porn)" 같은 특정 문자열들을 찾는다. 콘텐트 스크리닝은 예를 들어, HD에서 수행될 수 있거나(예를 들어, LSD의 메모리 어레이 내 특정 콘텐트에 대한 액세스 요청을 회피하게 한다), 다른 예로서, LSD 자체에서 수행될 수 있어서, 기입 액세스 요청들이든 판독 액세스 요청들이든 HD로부터 수신되는 액세스 요청을 차단한다.
저장 장치 제어기의 능력들의 증가로, 저장 장치 제어기에 의해 이용되는 프로세싱 자원들을 사용하여 저장 장치 내에서부터 소프트웨어 애플리케이션들의 실행은 가능해진다. 저장 장치 제어기의 이런 강화된 동작 능력은 예를 들어, 호스트 장치의 연루 없이 저장 장치상 데이터를 인덱스 하기 위하여 사용하는 새로운 인덱싱 모드들의 패러다임을 유도한다. 상기 인덱싱은 예를 들어, 통상적으로 다중 장치들 - 접속되거나 접속되지 않음 - 또는 액세스 모드들 - 유선 대 무선, 고정 대 이동 등에 걸쳐 있는 사용자의 디지털 콘텐트 소비 경험을 개선하기 위해 사용될 수 있다.
인덱스는 예를 들어, 강화된 검색 또는 다른 사용 능력을 사용자에게 답례로 제공하는 서비스 제공자에 노출되거나, 제공되거나 액세스할 수 있다. 예를 들어, 저장 장치는 사전-로딩된 콘텐트를 포함할 수 있고 사용자는 콘텐트를 다운로드하기 위하여 권해진다(소매상과 연관된 웹 사이트로부터). 답례로 사용자는 저장 장치로부터 인덱스가 제공되는 것에 대한 동의를 제공하고 예를 들어, 소매상 및/또는 연관된 엔티티들로부터 포커싱된 제안들을 수신할 수 있다. 다른 예로서, 저장 장치 밴더들은 목표된 서비스를 그들의 고객 베이스에 제공하도록 가능해질 수 있다.
"사용자-중심"(종래 "장치-중심"과 반대) 인덱싱 접근법에 대한 지원을 제공하기 위하여, 본 발명은 호스트 관리, LBA-바탕("LBA는 로컬 블록 어드레싱에 대한 약어임) 대량 저장 패러다임의 엄격한 제한들을 넘어서고 레거시 대량 저장 장치들과 완전히 역방향 호환할 수 있는 인덱싱 패러다임을 제공하고 대량 저장의 인덱싱을 강화하며, 따라서 디지털 콘텐트 사용의 검색/탐색을 강화한다. 게다가, 이런 방식으로 생성된 인덱스의 보고는 호스트 장치의 인덱싱 기능에 종속할 필요가 없다.
도 17은 호스트 장치(HD)(4102) 및 로컬 저장 장치(LSD)(4104)를 포함하는 컴퓨팅 시스템(4100)을 도시한다. HD(4102)는 호스트 장치 파일 시스템(HDFS)(4106)을 포함한다. LSD(4104)는 비교적 소형의 팩터를 갖는 메모리 카드 같은 제거 가능한 메모리 장치들의 형태를 취하고 카메라들, 핸드-헬드 또는 노트북 컴퓨터들, 네트워크 카드들, 네트워크 기구들, 셋톱 박스들, 핸드-헬드 또는 다른 작은 오디오 플레이어들/레코더들(예를 들어, MP3 장치들), 및 의료 모니터들 같은 전자 제품들에 대한 디지털 데이터를 저장하기 위해 사용될 수 있다. 메모리 카드의 예들은 PC 카드(이전에 PCMCIA 장치), 플래시 카드(예를 들어, 컴팩트 플래시 타입 Ⅰ및 Π), 보안 디지털(SD) 카드, 멀티미디어 카드(MMC), ATA 카드(예를 들어, 컴팩트 플래시 카드), 메모리 스틱, 스마트미디어 카드를 포함할 수 있다. 게다가, LSD(4104)는 캘리포니아주 밀리타스의 샌디스크 코포레이션에 의해 제조된 SD 호환 가능 iNANDTM 내장 플래시 드라이브 같은 비-제거 가능 메모리 장치들 형태를 취할 수 있다.
LSD(4104)는 HD/LSD 인터페이스(4112)에 의해 HD(4102)와 통신할 수 있다. HD/LSD(4112)는 HD(4102) 및 LSD(4104)가 기계적으로 접속할 수 있는 기계적 엔티티(소켓 또는 상호접속 버스 같은)로서 구성될 수 있다는 것이 주의된다. 몇몇 실시예에서, HD/LSD 인터페이스(4108)는 무선 인터페이스 형태를 취할 수 있다. 일반적으로, HD(4102)는 프로세서를 포함한다. 그러나, 명확화를 위해, HD(4102)에 포함된 프로세서는 이런 논의에서 추가로 도시되거나 언급되지 않지만, 그럼에도 불구하고 존재할 것이라 가정된다. LSD(4104)는 HD(4102)에만 물리적으로 접속될 수 있고 그러므로 HD(4102)에 의해 개입 없이 컴퓨팅 시스템(4100) 외부의 회로들 및/또는 애플리케이션들과 액세스하거나 통신한다. 통상적으로, LSD(4104)는 몇몇 경우들에서 LSD(4104)가 HD(4102) 외부의 장치에 직접 인터페이스할 수 있지만 HD(4102)에 의해 제공된 인터페이스 외에 HD(4102) 외부의 장치에 대해 임의의 인터페이스를 사용하지 않는다.
HD(4102)는 LSD 드라이버(4108)와 통신하는 호스트 장치 파일 시스템(HDFS)(4106)을 포함한다. 기술된 실시예에서, HDFS(4106)는 LSD 드라이버(4108)에 LSD 관리 명령(4110)을 내릴 수 있다. LSD 드라이버(4108)는 차례로 HD/LSD 인터페이스(4112)에 의해 LSD(4104)에 LSD 관리 명령(4110)(적당하게 포맷됨)을 전달할 수 있다. 예를 들어, LSD 관리 명령(4110)은 LSD(4104)가 논리적 블록 어드레스(LBA) 아키텍쳐를 갖는 데이터 저장 어레이를 포함하도록 구성되는 경우들에서 블록 명령 형태를 취할 수 있다. LSD 관리 명령들(4110)은 LSD(4104) 및 HD(4102) 사이의 데이터(4111) 흐름을 유발한다.
HD(4102)는 (내부) 소프트웨어 애플리케이션(4114)을 포함할 수 있다. 내부 애플리케이션은 소프트웨어 애플리케이션(4114)이 LSD(4104)와 통신하기 위하여 HDFS(4106)(통상적으로 호스트 장치 동작 시스템 4116의 일부임) 및 LSD 드라이버(4108)를 사용할 수 있는 것을 의미한다. 상기 소프트웨어 애플리케이션은 그 각각이 통상적으로 호스트 장치 메인 메모리(하드 디스크 드라이브, 또는 HDD, 및 플래시 메모리 같은 비-휘발성 메모리 형태를 가질 수 있음) 내에 잔류하는 애플리케이션(4118)을 포함할 수 있다.
예를 들어, 컴퓨팅 시스템(4100)은 휴대용 미디어 플레이어일 수 있고, 애플리케이션(4118)은 미디어 플레이어 애플리케이션일 수 있다. 이 경우, 예를 들어, LSD(4104)는 MP3 형태의 오디오 파일들, MP4 형태의 비디오/오디오 파일들 또는 JPEG 형태의 스틸 사진 파일들 같은 여러 디지털 미디어 파일들을 저장할 수 있다. LSD 관리 명령들(4110)은 LSD(4104)로부터 파일들의 데이터를 검색하기 위하여 예를 들어, 데이터 액세스 명령들일 수 있다.
도 17 예에서, 데이터 액세스 명령들은 LSD(4104)의 대량 저장 영역(4120)에 저장된 파일 할당 테이블(FAT)의 일부를 판독하고 그 다음 대량 저장 영역(4120)으로부터 하나 또는 그 이상의 데이터 블록들을 판독하기 위한 HDFS 명령들일 수 있다. 예를 들어, 대량 저장 영역(4120)은 메모리 어레일 수 있고 대량 저장 영역은 LSD(4104)에 대해 로컬의 파일 시스템이 아닌 HDFS(4106)에 의해 관리될 수 있다. 예를 들어, LSD(4104)는 제 1 저장 영역(4124) 및 제 2 저장 영역(4126)을 갖는 제어기(4122) 및 대량 저장 어레이(4120)를 포함할 수 있다. 저장 어레이(4120)가 메모리 셀들의 어레이(플래시 같은)로 형성될 수 있다는 것을 주의해야 한다. 이런 특정 경우에서, 비록 대량 저장 어레이(4120)가 플래시 메모리 셀들의 어레이로 가정될 수 있지만, 본 발명은 본 발명이 적합한 타입의 메모리 셀이 사용될 수 있다는 것이 고려되기 때문에 플래시 타입 메모리 셀들로만 제한되지 않는다.
제어기(4122)는 HDFS(4106)의 명령으로 동작하는 제 1 저장 영역(4124)을 관리할 수 있는 플래시 관리자(4128)를 포함한다. 특히 유용한 어레인지먼트에서, 제 1 저장 영역(4124)은 LBA-바탕 대량 저장 어레이일 수 있다. 따라서, 제 1 저장 영역(4124)에 저장된 데이터 블록들의 위치는 각각의 블록이 예를 들어, 각각 512 또는 1024 바이트들 정도일 수 있는 논리 블록 어드레싱(LBA)을 사용하여 지정될 수 있다. 이런 방식으로, 제 1 저장 영역(4124)은 임의의 고안된 레거시 대량 저장 아키텍쳐(즉, 레거시 호스트들과 관련하여 작동함) 및 보다 특히 LBA 타입 시스템들과 완전히 역방향 호환할 수 있다. 특히, LSD(4104)(특히, 제 1 저장 영역 4124)은 레거시 인터페이스들, 버스들, 및 레거시 제품들의 설치된 베이스에 완전한 호환성을 제공하는 모든 연관된 프로토콜들을 사용하여 표준 LBA 아키텍쳐 하에서 동작할 수 있다.
제어기(4122)는 호스트 장치(4102)의 연루 없이 LSD(4104)의 제 1 저장 영역(4124)에 저장된 데이터를 인덱스하도록 구성된 인덱서(4130)를 더 포함한다. 일 실시예에서, 인덱서(4130)는 데이터가 HD(4102)에 의해 제 1 저장 영역(4124)에 및/또는 상기 제 1 저장 영역으로부터 저장되기 때문에 데이터를 인덱스한다. 따라서, 예를 들어, 인덱서(4130)는 제 1 저장 영역(4124) 및 HD(4102) 사이에서 전달되는 데이터 콘텐트를 식별할 수 있고 이를 바탕으로 제 1 저장 영역(4124) 내 데이터를 인덱스한다. 모니터링 및 인덱싱은 LSD(4104)에 의해 행해지고 그 결과는 대량 저장 어레이(4120)의 제 2 저장 영역(4126) 내에 "인덱스 데이터"로서 저장된다. 다른 실시예로서, 인덱서(4130)는 호스트 장치(4102)의 연루 없이 제 1 저장 영역(4124) 내 데이터에 관한 인덱스 데이터를 생성하기 위해 제 1 저장 영역(4124) 내 데이터에 액세스할 수 있다.
도 18은 데이터 인덱싱이 HD(4102)에 의해 LSD(4104)에 대한 데이터 액세스 동작을 관찰하는 것을 바탕으로 보다 상세히 발생할 수 있는 방법의 예를 도시하고, 관찰은 HD(4102)의 연루 없이 이루어진다. 도 18을 참조하여, 명령들(4110)은 hd/lsd 인터페이스(4112)를 통하여 HD(4102)로부터 LSD(4104)로 제공된다. 상기 논의된 바와 같이, 명령들(4110)은 HDFS(4106)의 명령으로 작동하는 제 1 저장 영역(4124)을 관리하기 위하여 제어기(4122)의 플래시 관리자(4128)에 제공된다. 인덱서(4130)는 명령들(4110)을 관찰하고 이를 바탕으로, 제 1 저장 영역(4124)에 저장되거나 상기 제 1 저장 영역으로부터 판독되도록 관찰되는 데이터(411)와 관련하여, 제 1 저장 영역(4124) 내 데이터를 인덱스한다. 명령들(4110)은 인덱싱 기능을 알리기 위하여 데이터 액세스를 특화하도록 사용될 수 있다. 인덱스 정보는 저장 어레이(4120)의 제 2 저장 영역(4126) 내에 저장되도록 제공된다.
명령(4110)이 HDFS(4106)의 명령으로 작동하는 제어기의 플래시 관리자(4128)에 제공되는 바와 같이 도시되지만, 다른 실시예에서, 명령들 또는 다른 신호들은 HDFS 동작들의 결과로서가 아니고 HD(4102)로부터 LSD(4104)로 제공된다. 예를 들어, 상기 명령 또는 다른 신호들은 HDFS 동작들의 결과로서 아니고 드라이버 레벨 동작들과 같은 다른 동작을 기초로 제공될 수 있다.
데이터 액세스 특성화는 예를 들어, 인덱싱 기능을 알릴 수 있는 인덱스되는 데이터가 비디오, 음악 또는 사진인 것을 구별하는 것을 도울 수 있다. 따라서, 저장 어레이(4120)의 제 2 저장 영역(4126) 내에 저장되도록 제공된 인덱스 정보는 직접적으로 결정된 데이터 액세스 특성화인지 결정된 데이터 액세스 특성화를 추가로 프로세싱한 결과인지에 따라 적어도 부분적으로 인덱서(4130)에 의해 데이터 액세스 특성화를 기반으로 할 수 있다.
예를 들어, 만약 HD(4102)가 명령(4110)으로서 판독 데이터 블록 명령인 단일 데이터 판독 명령을 제공하고 추가로 대응하는 데이터 판독 명령들이 없다는 것이 인덱서(4130)에 의해 식별되면, HD(4102)에 의해 판독된 사진이 제 1 저장 영역(4124)으로부터 발생하였다는 것을 결정할 수 있다. 다른 예로서, HD(4102)가 제 1 저장 영역(4124)의 파일 할당 테이블(FAT)을 판독하기 위한 명령(4110)을 제공하고(가정하면 데이터 위치를 맵핑하기 위하여), HD(4102)가 고정된 레이트/처리량으로 제 1 저장 영역(4124)으로부터 데이터 블록들을 판독하기 위하여 명령들(4110)을 제공하는 것이 식별되면, 인덱서(4130)는 명령의 이런 그룹이 제 1 저장 영역(4124)으로부터 음악 파일의 판독에 대응하는 것이 식별된다. 다른 실시예로서, 만약 HD(4102)가 제 1 저장 영역(4124)의 파일 할당 테이블(FAT)을 판독하기 위해 명령(4110)을 제공하고(가정하면 데이터 위치를 맵핑하기 위해), HD(4102)가 가변 레이트/처리량으로 제 1 저장 영역으로부터 데이터 블록들을 판독하기 위하여 명령들(4110)을 제공하는 것을 인덱서(4130)가 식별하면, 이런 그룹의 명령들은 제 1 저장 영역(4124)으로부터 비디오 파일의 판독으로서 특징화될 수 있다. (몇몇 경우들에서, 비록 FAT 데이터가 HD에 캐시될 수 있지만, FAT 판독에 추후 데이터 액세스 명령들을 상관시키는 것은 어렵거나 불가능할 수 있다). 이들은 어떤 인덱서(4130)가 HD(4102) 내지 LSD(4104)로부터의 명령들(4110)로부터 식별할 수 있는지의 예들이고 다른 예들은 가능하다. 많은 여기 예들이 판독 데이터 액세스에 관련되지만, 특성화된 데이터 액세스는 또한(또는 대신) 제 1 저장 영역(4124)에 미디어 파일들을 로딩하기 위한 기입 데이터 액세스 같은 기입 데이터 액세스를 포함할 수 있다.
이들이 데이터 액세스 패턴들의 예들이지만, 패턴들이 LD(4104)에 사전-로딩될 수 있고(가능하면 동적으로 업데이트되고, 그의 예들은 이 특허 출원에서 추후 논의된다) 인덱서(4130)에 의해 데이터 액세스의 특정 타입들을 식별하기 위한 기준으로서 사용될 수 있다는 것이 이해되어야 한다. 사용시, 패턴들은 예들에서 처럼 매우 단순할 수 있거나, 보다 복잡할 수 있다.
게다가, 인덱서(4130)는 메모리 어레이(4124)에 저장된 데이터의 인덱스 정보를 제공하는 프로세스에서 LSD(4104)(예를 들어, 판독 및 기입 방향의 어느 하나 또는 양쪽으로)의 제 1 저장 영역(4124) 및 HD(4102) 사이에서 전달되는 데이터 블록들(4202)의 콘텐트를 사용할 수 있다. 예를 들어, 인덱서(4130)는 데이터 블록의 콘텐트가 문자열 "JFIF"를 포함하고, 사진(JPEG)에 대응으로서 데이터 블록을 특성화할 수 있고 인덱스 정보를 제공하는 프로세스에서 이런 특성화를 사용할 수 있다는 것을 식별할 수 있다. 다른 예로서, MP3 파일은 통상적으로 문자열 "ID3"로 시작하는 "태그들"을 가지며, PDF 파일들은 "%PDF"에서 시작하고, mp4 비디오 파일들은 문자열 "ftyp3gp"를 포함한다. 따라서, 예를 들어, 각각의 "태그"는 사전-로딩, 업데이트, 또는 다른 방법 같은 임의의 다른 패턴 같이 조종될 수 있는 하나의 특정 패턴 타입으로서 고려될 수 있다.
데이터 특성화는 예를 들어, 인덱스 데이터의 일부로서 인덱스에 저장될 수 있다. 따라서, 예를 들어, 데이터 특성화부들은 워드 또는 데이터 인덱스 단독을 바탕으로 제공되는 검색 결과들을 결정하고 및/또는 추가로 정제하기 위해 사용될 수 있다.
게다가, 인덱서(4130)는 메모리 어레이(4124)의 제 1 부분에 저장된 데이터의 인덱스 데이터로서 HD(4102) 및 LSD(4104)의 제 1 저장 영역(4124)(예를 들어, 판독 및 기입 방향의 어느 하나 또는 양쪽) 사이에서 전달되는 데이터 블록들(4202)의 콘텐트를 직접 사용할 수 있다. 상기 콘텐트는 예를 들어, 데이터 블록들(4202)의 콘텐트에 직접 포함된 텍스츄얼 데이터 또는 메타데이터를 포함할 수 있다.
일부 예에서, 인덱스될 콘텐트는 간접적으로 표현된 데이터를 인식하기 위하여 추가로 프로세싱될 수 있다. 따라서, 예를 들어, 데이터가 오디오 파일로서 특성화된 것이 인덱서(4130)에 의해 결정되면, 디지털 음성 인식은 인덱스될 콘텐트 데이터(예를 들어, 말해지거나 노래 불러진 같은)를 인식하기 위해 사용될 수 있다. 유사하게, 이미지 프로세싱은 데이터가 비디오 파일로서 특성화된 것이 인덱서(4130)에 의해 결정되면 콘텐트를 인식하기 위하여 사용될 수 있다. 따라서, 예를 들어, 비디오 파일의 일반적인 대상 또는 심지어 특정 항목들을 인식하고 검색 인덱스의 일부로서 저장될 수 있는 것은 가능하다. 몇몇 실시예에서, 인덱스는 또한 또는 대신 카탈로그의 특성화부들을 가질 수 있어서, 인덱스는 검색 결과들에 제공되기를 원하는 콘텐트가 아닌, LSD의 메모리 어레이에 저장된 특정 도큐먼트들(미디어 같은)에 관련하여 작용(또는 다른 메타데이터, 엄격히 콘텐트-바탕이 아님)을 바탕으로 검색 질문들에 응답하기 위해 사용될 수 있다. 예를 들어, 인덱싱은 HD에서 실행하고 LBA-바탕 명령들을 사용하는 미디어에 액세스하는 하나 또는 그 이상의 프로그램들에 의해 미디어의 관리에 적용될 수 있고, 하기와 같은 카탈로그 내 정보 검색을 기초로 하는 것은 바람직하다:
- LSD의 메모리 어레이에 저장된 노래가 얼마나 많이 플레이되었는가?
- LSD의 메모리 어레이에 저장된 노래가 언제 마지막을 플레이했는가?
- 최종까지 플레이된 LSD의 메모리 어레이에 저장된 노래가 있는가, 또는 플레잉이 중단되었는가?
예를 들어, 미디어 아이템이 플레이될 때, 인덱서(4130)는 "최종 플레이된 날짜" 또는 "플레이된 횟수들" 같은 아이템에 대한 카탈로그 내 몇몇 필드들을 업데이트하도록 동작할 수 있다.
게다가, 예를 들어, 카탈로그는 명령들(4110) 및/또는 데이터(4111)로부터 하기와 같은 동작을 식별하는 것을 바탕으로 업데이트될 수 있다:
- 새로운 플레이 리스트 정의 - 새로운 레코드는 플레이 리스트 카탈로그에 부가됨; 및
- 아이템 삭제 - 레코드가 카탈로그로부터 삭제됨.
카탈로그의 검색은 "search?artist=madonna&number_times_played=0" 같은 질문으로서 행해질 수 있고 - 이것은 "내가 결코 지불하지 않은 Madonna에 의해 불려진 모든 노래들을 발견"하라 라는 의미이다. 검색은 또한 또는 그렇지 않으면 "London" 또는 "guitar solo" 또는 인덱서(4130)에 의해 식별되고 인덱스된 다른 콘텐트 같은 노래들의 콘텐트를 바탕으로 할 수 있다.
호스트 장치(4102)와 LSD(4104) 사이에서 전달되는 명령들(4110) 및 데이터(4111)를 모니터링하는 것 외에, 인덱서(4130)는 대량 저장 영역(4124) 내 데이터에 직접 액세스함으로써 동작할 수 있다. 따라서, 예를 들어, 이런 방식으로, 인덱서는 인덱스(4126)에 거주하도록 하는 호스트 장치(4102)의 연루 없이, 백그라운드 같이 인덱스(4126) 내 저장을 위해 인덱스 데이터를 생성하도록 동작할 수 있다.
제 2 저장 영역(4126)은 인덱서(4130)에 의해 생성된 인덱스를 포함할 수 있다. 예를 들어, 도 18에서, 제 2 저장 영역(4126)은 하나 또는 그 이상의 검색 질문들에 응답하여 데이터 전체에 관련한 검색 결과들을 리턴하기 위하여 검색 엔진에 의해 사용될 지금 공지되거나 미래에 공지되는 여러 타입들의 인덱스 데이터 중 임의의 것을 포함할 수 있다.
인덱스는 가능하면 HDFS(4106)에 보이지 않는 저장 영역(4120)에 저장될 수 있다. 인덱스 데이터가 LSD(4104)에 의해 생성될 수 있는 방법의 몇몇 예들을 식별하여, 우리는 지금 인덱스 데이터가 사용될 수 있는 방법의 몇몇 예들을 논의한다. 일반적으로, 인덱스 데이터는 HD(4102) 및/또는 외부 프로세스에 의해 LSD(4104) 자체에 의해 사용될 수 있다.
도 17을 다시 참조하여, 시스템(4100)은 검색 인덱스(4126)가 HD(4102)에 의해 얻어지고 및/또는 사용될 수 있도록 구성될 수 있다. 예를 들어, 검색 인덱스(4126)는 저장 어레이(4120)의 대량 저장 영역(4124) 내에 저장될 수 있다. 예를 들어, LSD의 대량 저장 영역이 외부 파일 시스템(HDFS)에 의해 관리되지만 상기 대량 저장 영역에 기입하기 위한 방법의 예를 기술하는 "Related Applications" 섹션에서 상기 참조된 미국 특허 출원 12/029,356을 참조하자. 이 경우, 검색 인덱스(4126)는 대량 저장 영역(4124) 내 데이터에 일반적으로 액세스하기 위하여 사용될 수 있는 동작을 사용하여 HD(4102)에 액세스할 수 있다. 따라서, 예를 들어, HD(4102) 상에서 실행하는 애플리케이션(4118)은 HDFS(4106)가 LSD 드라이버(4108) 및 HD/LSD 인터페이스(4112)를 통하여 LSD(4104)에 명령들(4110)이 제공되게 하도록 동작할 수 있다. 상기 명령들(4110)은 검색 인덱스(4126)가 HD/LSD 인터페이스(4112)를 통하여 데이터(4111)로서 HD(4102)에 제공되게 하는 플래시 관리자(4128)에 제공될 수 있다.
HD(4102)에 의해 얻어진 검색 인덱스는 예를 들어, HD(4102)에 의해 실행되는 애플리케이션(4118)에 의해 사용될 수 있다. 따라서 얻어진 검색 인덱스는 HD(4102)로부터 HD(4102)가 접속될 수 있는 컴퓨터 또는 다른 서버상 미디어 관리 시스템 같은 외부 장치 또는 시스템에 제공될 수 있다. 상기 검색 인덱스는 예를 들어, 외부 장치 또는 시스템이 HD(4102)와 상호작용하거나 동작하는 방법의 적어도 부분적 결정으로 외부 장치 또는 시스템에 의해 사용될 수 있다.
도 19를 참조하여, 이것은 인덱스가 LSD(4104) 자체에 의해 실행되는 검색 엔진(4302)에 의해 사용될 수 있는 시스템의 예시적 구성을 도시한다. 상기 예에서, 플래시 관리자(4128)는 검색 질문(4304)인 명령(4110) 또는 명령(4110)의 일부를 호스트 장치(4102)로부터 수신하도록 동작할 수 있다. 검색 엔진(4302)은 검색 인덱스(4126)에 액세스할 수 있고, 검색 질문(4304)을 바탕으로 검색 결과(4306)를 호스트 장치(4102)에 리턴할 수 있다. 다른 예로서, 인덱싱 결과는 LSD에 의한 콘텐트 스크리닝을 위해 사용된다, 즉 애플리케이션은 LSD의 메모리 어레이 내 인증되지 않은 콘텐트에 대한 액세스를 금지하기 위하여 "porn" 같은 특정 문자열들을 찾는다. 콘텐트 스크리닝은 예를 들어, HD에서 수행될 수 있고(예를 들어, LSD의 메모리 어레이 내 특정 콘텐트에 대한 액세스 요청을 회피하게 하게 함) 또는 다른 예로서 LSD 자체에서 수행될 수 있어서, 기입 액세스 요청들이든 판독 액세스 요청들이든 HD로부터 수신된 액세스 요청을 차단한다.
다른 예로서, 애플리케이션(4308)(예를 들어, 브라우저 또는 SQL 에이전트 같은 웹 애플리케이션)은 호스트 장치(4102) 상에서 동작할 수 있고 검색 질문(4304)에 응답하여 검색 결과(4306)를 얻기 위하여 검색 엔진(4302)과 상호작용할 수 있다(데이터 액세스 동작들에 사용된 논리 인터페이스 외에 논리 인터페이스 4310을 통하여).
도 20은 검색 인덱스(4126)의 일부 또는 모두가 LSD(4104)의 프로세싱과 협력하여 예를 들어, 호스트 애플리케이션(4114), HDFS(4106) 및 LSD 드라이버(4108)에 의해 실행되는 것 같은 마스터/슬레이브 패러다임 외측의 외부 장치(네트워크 4408을 통하여 HD 4102에 결합된 장치 4406 같은)에 전달 또는 액세스되는 예시적인 구성을 도시한다. 종래의 마스터/슬레이브(또는 호스트/슬레이브) 패러다임 외측의 데이터 전달 또는 데이터 액세스의 예는 예를 들어, "Related Applications" 패러그래프에서 상기 참조된 미국 특허 출원 12/029,356에 기술된다.
도 20을 참조하여, LSD(4104) 상 에이전트(4402)는 HD(4102) 상 에이전트(4404)와 통신한다. 따라서, 예를 들어, LSD(4104) 상 에이전트(4402)와 HD(4102) 상 에이전트(4404) 사이에 통신은 HDFS(4106)에 의한 개입을 요구하지 않고 및/또는 전달된 인덱스 데이터가 HD(4102) 상 프로세싱(호스트 애플리케이션 4114 같은)에 액세스할 수 없는 안전한 경로를 통해서 이루어질 수 있다.
게다가, 장치(4406)는 검색 인덱스(4126) 또는 검색 인덱스 부분들에 명확하도록 검색 인덱스(예를 들어, 음성 인식 또는 이미지 인식 프로세싱을 수행하기 위해 사용된 파라미터들 같은)를 결정하기 위해 사용된 정보를 변형하는 것과 같은 검색 인덱스(4126)에 관련된 저장 동작들(상기 언급된 바와 같이)을 또한 수행할 수 있다.
게다가, 안전 경로를 사용하여, 인덱스(4126)는 검색 질문에 응답하기 위해 검색 인덱스(4126)를 장치(4406)에 전달하지 않고 장치(4406)에 의해 액세스될 수 있다. 일 실시예에서, 에이전트(4402)는 외부 장치(4406)로부터 에이전트(4402)에 제공된 검색 질문을 바탕으로, LSD(4104) 상 검색 인덱스(4126)를 프로세싱함으로써, 외부 장치(4406)에 질문 응답을 제공할 수 있는 검색 엔진 기능을 포함할 수 있다. 상기된 바와 같이, 검색 질문은 특정 콘텐트에 대한 검색이고 및/또는 질문 응답을 결정하기 위해 인덱스(4126) 내 메타데이터를 사용하기 위한 것일 수 있다.
일반적으로, 예로서 도 20 구성을 사용하여, 검색 인덱스(4126)를 프로세스하는 애플리케이션은 HD 내(또는 LSD 내) 임의의 관련 애플리케이션과 공유된 논리적 인터페이스를 통하여 액세스될 수 있다. LSD가 인터넷/IP/네트워크 인터페이스를 노출한다는 사실은 HD 내의 표준 인터넷 클라이언트 애플리케이션이 표준 서버로서 LSD 내 인덱스를 보다 쉽게 액세스하게 한다. 따라서, HD 상에서 작동하는 표준 인터넷/IP-바탕 클라이언트 애플리케이션(예를 들어, 웹 브라우저 또는 SQL 클라이언트)가 있을 수 있고 인덱스(4126)는 LSD 내 서버(예를 들어, 웹 서버 또는 SQL 서버)로서 액세스될 수 있다. 어느 경우나, 서버는 HD가 아닌 LSD 내부에 있고, 클라이언트는 HD 또는 원격 장치 내에 있다.
이제 도 21로 돌아가서, 도 21은 넓은 측면에서 LSD가 LSD 상 인덱스(4502)에 대한 인덱스 데이터를 생성할 수 있는 방법을 도시하는 흐름도이다. 4504에서, HD의 연루 없이, LSD는 LSD의 메모리 어레이에 저장된 데이터에 관한 인덱스 데이터를 생성한다. LSD의 메모리 어레이는 HD에 의해 데이터 블록으로서 관리된다. 4506에서, LSD는 검색 인덱스(4502)의 적어도 일부로서 LSD 상에 생성된 인덱스 데이터를 저장한다. 따라서, 예를 들어, 검색 질문은 수신되고(4508) 및 검색 질문은 검색 질문에 대한 응답을 생성하기 위해 인덱스(4502)에 관련하여 프로세싱된다(4510).
따라서, 우리는 LSD가 호스트 장치(HD)의 연루 없이 LSD의 메모리 내 데이터를 인덱스할 수 있는 시스템 및 방법을 기술하였다. 게다가, 우리는 인덱스가 예를 들어, 검색 질문들에 응답하도록 프로세싱될 수 있는 방법을 기술하였다. 또한 우리는 예를 들어, 검색 인덱스가 콘텐트 스크리닝에 이용될 수 있다는 것을 기술하였다.
도 22는 본 발명의 실시예에 따른 마스터/슬레이브 시스템(5100)의 간략화된 블록도를 도시한다. 예를 들어, 여기에 기술된 특정 실시예에 따라, 슬레이브 장치는 상기된 임의의 저장 장치들로 제한되지 않는 것과 같이 로컬 저장 장치의 형태를 취할 수 있고 마스터 장치는 상기된 임의의 호스트 장치들로 제한되지 않는 것과 같이 호스트 장치의 형태를 취한다. 백그라운드에서 상기된 바와 같이, 마스터/슬레이브는 하나 또는 그 이상의 다른 장치를 통해 하나의 장치 또는 프로세스가 일방향 제어를 갖는 통신 프로토콜에 대한 모델이다. 종래의 시스템에서, 일단 장치들 또는 프로세스들 사이의 마스터/슬레이브 관계가 설정되면, 제어 방향은 항상 마스터로부터 슬레이브이다, 즉 슬레이브는 트랜잭션을 개시할 수 없다. 몇몇 시스템들에서, 마스터는 슬레이브들의 역할로 작동하는 다른 장치를 갖는 적합한 장치들의 그룹으로부터 선출된다. 따라서, 마스터/슬레이브 시스템(510)(이후 또한 시스템 5100이라 지칭됨)은 적어도 종래의 마스터/슬레이브 패러다임의 방식으로 서로 관련된 적어도 마스터 장치(5102)(이후 호스트 장치 5102 또는 호스트 제어기 5102라 지칭됨), 제 1 슬레이브 장치(5104)(이후 저장 장치 5104라 지칭됨) 및 제 2 슬레이브 장치(5106)(이후 저장 장치 5106이라 지칭됨)를 포함한다.
시스템(5100)은 또한 주변 저장 장치들(5104 및 5106)과 호스트 장치(5102)를 접속시키기 위해 사용된 복수의 통신 또는 신호 라인들(5108)(이후 버스 5108이라 지칭됨)을 포함한다. 비록 단지 두 개의 주변 저장 장치들이 도시되지만, 많거나 적은 저장 장치들은 버스(5108)에 용이하게 결합될 수 있다. 버스(5108)를 구성하는 신호 라인들의 실제 수는 또는 폭넓게 가변될 수 있다. 예를 들어, 몇몇 현대 버스들은 비교적 적은 수의 신호 라인들(예를 들어, 8-16 신호 라인들)을 가지며, 다른 현대 버스들은 서브-버스들(예를 들어, 어드레스 버스, 제어 버스, 데이터 버스 등)으로서 효과적으로 작용하는 라인들의 서브세트들로 그 자체들이 논리적으로 분할될 수 있는 100개가 넘는 라인들을 가질 수 있다.
각각의 저장 장치는 통상적으로 대응하여 유일하고 영구적인 장치 식별자를 포함한다. 몇몇 버스 프로토콜들에서, 영구적 장치 식별자는 버스 통신들 내에서 장치를 식별하기 위해 사용된다. 다른 프로토콜들에서, 호스트 제어기는 버스에 결합된 각각의 장치에 일시적 장치 식별자 및/또는 연관된 어드레스들의 세트를 할당할 것이다. 통상적으로, 상기 일시적 장치 식별자들 및/또는 어드레스들에는 각각의 저장 장치(5104 또는 5106)의 접속 및 개시 중에 버스(5108) 및 호스트 제어기(5102)가 할당되거나, 상기 일시적 장치 식별자들 및/또는 어드레스들은 제거 가능한 메모리 카드의 경우 카드의 삽입 중에 연관된 카드 판독기에 할당된다. 비록 버스 프로토콜 및 메모리 관리 프로토콜의 특성들이 이용된 특정 버스 및 저장 장치들의 성질을 바탕으로 가변될 것이지만, 호스트 제어기(5102)는 통상적으로 각각의 저장 장치의 각각의 장치 식별자(들)를 인식한다.
통상적으로, 버스(5108)에 부착된 특정 장치는 통상적으로 특정 저장 장치에 장치 식별자들 및/또는 목표하는 통신들/명령의 어드레스들을 사용하는 호스트(5102)로부터 전송된 통신을 바탕으로 특정 통신 또는 명령에 응답하도록 제안을 받는지를 알 것이다. 즉, 몇몇 프로토콜들에서, 각각의 통신은 일반적으로 저장 장치들이 통신 타깃인지 아닌지 여부를 저장 장치에게 알리는 장치 식별자를 포함할 것이다. 다른 프로토클들에서, 장치 식별자는 명확하게 각각의 메모리 관련 통신들 부분으로서 전송되지 않는다. 오히려, 명령은 명령(예를 들어, 판독, 기입 또는 소거 명령)이 어드레싱되는 어드레스를 식별할 수 있다. 일반적으로, 통신에 의해 식별되지 않거나 어드레스되지 않는 장치들은 간단히 통신을 무시할 것이다.
도시된 실시예에서, 통신들은 적합한 버스 프로토콜에 따라 공유된 버스(5108)를 통하여 저장 장치들(5104 및 5106)로 전송된다. 버스 프로토콜은 정보가 버스를 통해 통신되는 방법을 지정한다. 다시, 적합한 버스 프로토콜들은 비록 폭넓은 다른 버스 프로토콜들이 또한 사용될 수 있지만, 보안 디지털 카드(SD) 프로토콜, 멀티 미디어 카드(MMC) 프로토콜 및 유니버셜 시리얼 버스(USB) 프로토콜을 포함한다. 게다가, 당업자에 의해 인식될 바와 같이, 현재 저장 장치들은 폭넓은 다른 아키텍쳐들을 이용하고 새로운 아키텍쳐들이 계속 개발되는 것이 예상된다. 일반적으로, 본 발명은 저장 장치가 적합한 프로세싱 전력을 갖는 한 여러 다른 타입들의 메모리와 관련하여 이용될 수 있다.
도 23은 본 발명의 일 실시예에 따라 보다 상세히 각각의 저장 장치들(5104 및 5106)을 대표하는 저장 장치(5200)의 일반적 구조를 도시하는 블록도이다. 여러 실시예에서, 저장 장치(5200)는 종래의 또는 레거시 저장 장치일 수 있다. 이전에 언급된 바와 같이, 저장 장치(5200)는 제거 가능하거나 비-제거 가능한 장치일 수 있다. 도시된 실시예에서, 저장 장치(5200)는 종래의 제거 가능한 플래시 메모리 카드이고 일반적으로 메모리 제어기(5214) 및 대량 저장 영역(5216)을 포함한다. 메모리 제어기(5214)는 메모리 관리자(5218) 및 프로토콜 파서(parser)(5220)를 포함한다.
당업자에 의해 잘 이해될 바와 같이, 프로토콜 파서(5220)는 버스(51089)를 통해 전송된 통신들을 분석하기 위해 구성된다. 보다 특히, 프로토콜 파서(5220)는 호스트(5102)로부터 전송된 통신을 분석하고 저장 장치(5200)가 통신의 일부로서 지정된 어드레스 또는 장치 식별자를 바탕으로 버스 통신의 의도된 타깃인지를 결정하도록 구성된다. 만약 버스 통신이 저장 장치(5200)로 지향된 메모리 동작이면, 통신은 메모리 관리자(5218)로 전달되고 차례로 대량 저장 영역(5216)에 액세스하는 요청된 동작을 수행한다. 저장 장치(5200)에서 지시된 다른 명령들은 프로토콜 파서(5220) 또는 메모리 관리자(5218)에 의해 적합한 때 응답된다. 다른 장치에서 지시된 명령들 및 통신들은 일반적으로 간단히 저장 장치(5200)에 의해 무시된다.
제거 가능한 적어도 하나의 저장 장치들이 있는 실시예에서, 저장 장치 식별자는 바람직하게 목표된 저장 장치와 연관된 영구 장치 식별자이다. 당업자에게 친숙한 바와 같이, 플래시 메모리 카드들 같은 많은 타입의 저장 장치들은 이런 목적을 위해 사용될 수 있는 연관된 영구 장치 식별자를 가진다. 그러나, 영구 장치 식별자들을 포함하지 않는 저장 장치를 사용하는 실시예에서, 호스트(5102)에 의해 할당된 장치 식별자는 사용될 수 있다. 여기서 몇몇 경우들에서, 단일 물리적 장치가 물리적 장치 내의 둘 또는 그 이상의 어드레스 가능 저장 영역들(또는 장치들)을 포함할 수 있다. 이 경우, 각각의 저장 영역은 대응하는 장치 식별자 및/또는 논리적 어드레스들 세트를 가질 수 있다. 또한, 만약 특정 명령이 버스(5108) 상 모드 저장 장치에 어드레스되면, 브로드캐스트 식별자가 명령이 버스 상 모든 장치에 어드레스되었다는 것을 가리키거나, 목표된 장치 식별자들의 모든 리스트가 사용될 수 있다.
일반적으로, 호스트(5102)로부터 전송된 명령 같은 통신은 수행될 버스 프로토콜 동작 타입을 식별하는 동작 식별자를 포함한다. 식별된 동작은 판독, 기입 및 소거 동작들 같은 메모리 동작들; 분할을 생성하기 위하여 목표된 저장 장치에 대한 명령 같은 메모리 관리 명령들; 개시 및 인증 요청들; 인터럽트들; 확인응답들; 에러 신호들 및 임의의 다른 버스 관련 명령들 또는 동작들일 수 있다.
시스템(5100)을 다시 참조하여, 호스트(5102)는 저장 장치들(5104 및 5106)의 여러 동작을 제어한다. 예를 들어, 호스트는 다른 하우스키핑 동작들과 함께 데이터를 기입, 판독 및 소거하도록 저장 장치에게 명령하는 명령들을 저장 장치에 전송한다. 명령들은 호스트(5102)로부터 버스(5108)를 통하여 버스와 접속된 하나 또는 그 이상의 목표된 저장 장치들로 통신된다. 주어진 명령에 의해(예를 들어, 명령 내의 장치 식별자 및/또는 어드레스에 의해) 목표된 저장 장치(들) 만이 명령을 허용하고 상기 명령을 기초로 동작을 실행한다. 기술된 실시예에서, 호스트(5102)만이 버스(5108)를 통하여 명령들을 전송할 수 있다는 것을 주의해야 한다.
본 발명의 특정 실시예의 기본 예를 도시하기 위하여, 소스 저장 장치(5104)로부터 목적지 저장 장치(5106)로 데이터를 기입하는 프로세스(5300)는 도 24의 흐름도 및 도 22의 시스템을 참조하여 기술된다. 프로세스는 5302에서 시작하고 호스트(5102)는 버스에 청취되도록 저장 장치(5106)를 목표로 하고 저장 장치(5106)에게 명령하며 버스로부터의 데이터를 장치의 메모리에 기입하기 위한 LISTEN/WRITE 명령을 버스(5108)를 통해 전송한다. 일 실시예에서, LISTEN/WRITE 명령은 저장 장치(5106)가 특정 시간(T1)에서 버스(5108)에 청취되도록 하기 시작하고 시간(T1) 이후 버스로부터의 데이터를 장치의 메모리에 기입한다. 보다 특히, 시분할 다중화 프로토콜이 버스(5108)를 통하여 데이터의 전달을 구성하기 위하여 사용되는 실시예에서, 호스트(5102)는 저장 장치(5106)에게 명령하여 특정 시간 슬롯(X1)에서 버스(5108)에 청취되는 것이 시작되게 한다. 다른 실시예에서, 슬레이브 장치(5106)는 즉각적으로 청취가 시작되도록 명령을 받을 수 있고 데이터가 기입되도록 버스(5108) 상에서 이용 가능할 때까지 기다린다.
호스트(5102)는 또한 장치의 메모리로부터 데이터를 판독하고 상기 데이터를 버스(5108) 상에 출력하기 위하여 저장 장치(5104)를 목표로 하고 저장 장치(5104)에게 명령하는 READ 명령을 5304에서 버스(5108)에 전송한다. 일 실시예에서, READ 명령은 저장 장치(5104)에게 명령하여 특정 시간, 바람직하게 임의의 데이터를 손실하지 않도록 T1에서 또는 T1 이후에 버스(5108) 상에 데이터를 판독 및 출력하기 시작한다. 다시, 시분할 다중 프로토콜이 버스(5108)를 통하여 데이터의 전달을 구성하기 위해 사용되는 실시예에서, 호스트(5102)는 저장 장치(5104)에게 명령하여 특정 시간 슬롯(X1)에서 버스(5108) 상에 데이터를 판독 및 출력하기 시작한다. 다른 실시예에서, 슬레이브 장치(5104)는 버스 상에 데이터를 즉각 판독 및 출력하도록 명령받는다.
이런 방식으로, 저장 장치(5106)는 저장 장치(5104)로부터 직접 출력된 데이터를 버스(5108)로부터 풀링하고 상기 데이터를 메모리에 기입한다. 보다 특히, 종래의 어레인지먼트들과 달리, 저장 장치(5104)로부터 출력된 데이터는 우선 호스트(5102) 내 또는 버스(5108)로부터 풀링하기 전 임의의 다른 장치에 일시적으로 캐시되지 않고 저장 장치(5106)에 기입된다. 따라서, 호스트(5102)가 저장 장치(5104) 및 저장 장치(5106) 사이에서 데이터의 트랜잭션을 개시하지만, 호스트(5102)는 데이터를 저장 및/또는 전송하는데 연루되지 않는다.
따라서, 여러 마스터/슬레이브 버스 프로토콜들(SD 프로토콜)이 호스트가 트랜잭션들을 개시하고 명령들을 전송하는 것을 지시하는 동안, 본 발명은 이런 종래의 패러다임을 회피한다. 즉, 본 발명은 버스(5108)를 통하여 전송 또는 수신한 데이터가 호스트(5102)로부터 전송되거나 수신되는 것을 각각의 저장 장치가 가정할 때 레거시 장치들 및 마스터/슬레이브 프로토콜들을 사용하면서 저장 장치(5104 및 5106) 사이에 데이터의 직접적인 전달을 수행한다. 이런 방식으로, 버스(5108)를 통하여 전송된 데이터의 총 량이 대략 절반으로 잘려질 수 있다는 것이 인식되어야 한다; 즉, 데이터가 우선 캐싱 장치에 의해 캐싱되고 그 다음 재전송되기 보다, 하나의 저장 장치로부터 다른 저장 장치로 직접 기입될 수 있기 때문에, 주어진 트랜잭션 동안 버스(5108)를 통하여 전송된 데이터의 양은 대략 절반으로 잘려질 수 있고 따라서, 요구된 총 대역폭은 유사하게 감소될 수 있다. 결과적으로, 저장 장치들 자체 사이의 데이터 전달 레이트는 증가될 수 있고 게다가 호스트(5102)의 프로세서 요구조건들은 감소될 수 있다.
일 실시예에서, 저장 장치(5104)는 장치(5104)를 목표로 하고 버스(5108) 상 데이터 판독 및 출력을 중단하도록 저장 장치(5104)에게 명령하는 STOP_READING 명령을 호스트(5102)가 5306에서 내릴 때의 시간까지 버스(5108) 상 데이터를 계속 판독 및 출력한다. 유사하게, 저장 장치(5106)는 장치(5106)를 목표로 하고 버스로부터 데이터를 풀링하는 것을 중단하도록 저장 장치(5106)에게 명령하는 STOP_LISTENING 명령을 호스트(5102)가 5308에서 내리는 시간까지 버스(5108)로부터 데이터를 계속 풀링한다.
대안적인 실시예에서, READ 명령은 또한 저장 장치(5104)에게 명령하여 지속기간(D1)이 경과하는 시점까지 버스(5108) 상에 데이터를 계속 출력하게 한다. 유사하게, LISTEN/WRITE 명령은 또한 저장 장치(5106)에게 명령하여 지속기간(D2)이 경과될 때까지 버스(5108)로부터 데이터를 계속 풀링하게 한다. 바람직한 실시예에서, D2는 임의의 데이터를 손실시키지 않기 위하여 적어도 가능한 한 D1을 길게 한다. 예를 들어, 만약 호스트(5102)가 전달될 데이터의 양(예를 들어, 비트들의 수) 및 버스(5108)의 동작 주파수를 알면, 호스트는 데이터를 전달하기 위해 필요한 지속 시간을 계산하고 추후 저장 장치(5104)에게 명령하여 이런 지속 기간 동안 데이터를 출력하게 하고 저장 장치(5106)에게 명령하여 이런 지속 기간 동안 데이터를 계속 청취 및 기입하게 한다.
다른 대안적인 실시예에서, LISTEN/WRITE 명령은 저장 장치(5106)에게 명령하여 연속적일 수 있거나 연속적일 수 없는 특정 시간 슬롯들(Xn) 동안 버스(5108)에 청취되게 한다. 시간 슬롯들(Xn) 동안 버스(5108) 상 데이터는 장치의 메모리에 기입된다. 이런 대안적인 실시예에서, READ 명령은 유사하게 저장 장치(5104)에게 명령하여 특정 시간 슬롯들(Xn) 동안 버스(5108) 상 데이터의 판독 및 출력을 시작시킨다. 다시, 시간 슬롯들이 연속적이지 않을 수 있다는 것이 주의된다. 보다 특히, 호스트(5102)는 저장 장치(5104)에게 명령하여 다시 몇몇 실시예에서 연속적이지 않을 수 있는 시간 슬롯들(X1, X2, X3 및 X4) 내에서 데이터(A)를 버스(5108)에게 출력시킨다. 호스트(5102)는 저장 장치(5106)에게 명령하여 시간 슬롯들(X1, X2, X3 및 X4) 동안 버스(5108)로부터 데이터를 청취 및 풀링하게 한다.
설명을 위한 상기 설명은 본 발명의 완전한 이해를 제공하기 위한 특정 예들을 사용하였다. 그러나, 특정 항목들이 본 발명을 실행하기 위해 요구되지 않는 것이 당업자에게 명백할 것이다. 따라서, 본 발명의 특정 실시예의 상기 설명들은 도시 및 기술을 위해서 제공된다. 그들은 총망라된 것으로 의도되지 않거나 본 발명을 개시된 정확한 형태들로 제한되도록 의도되지 않는다. 많은 변형들 및 변화들이 상기 지침들의 측면에서 가능하다는 것이 당업자에게 명백할 것이다.
예를 들어, 비록 프로세스(5300)가 하나의 저장 장치(5104)로부터 다른 단일 저장 장치(5106)로 데이터를 전달하는 것을 참조하여 기술되었지만, 호스트(5102)가 특정 시간들에서 버스에 대해 청취하고 연관된 데이터를 메모리에 기입하도록 복수의 저장 장치에게 명령하는 멀티캐스트 또는 브로드캐스트 명령을 내릴 수 있다는 것이 인식된다. 이런 방식으로, 데이터의 다중 카피들은 복수의 장치들 상에 동시에 저장될 수 있다.
또한, 비록 상기 설명이 하나의 메모리 장치로부터 데이터를 판독하고 데이터를 저장될 다른 메모리 장치에 전달하는 환경에서 기술되었지만, 본 발명의 측면들이 특히 저장 장치들로서 구성된 것과 다른 장치에 응용할 수 있다는 것이 인식되어야 한다. 예를 들어, 본 발명의 측면들은 통신들 및 데이터를 외부 네트워크에 그리고 상기 외부 네트워크들로부터 전달하는데 사용할 수 있다. 보다 특히, 버스와 결합된 제 1 슬레이브 장치는 WiMax, Wi-Fi 또는 블루투쓰 같은 외부 네트워크 또는 프로토콜에 대한 네트워크 브릿지로서 작동하는 네트워크 카드일 수 있고, 제 2 슬레이브 장치는 버스와 결합된 저장 장치일 수 있다. 예를 들어, 마스터는 외부 네트워크로부터 버스를 통하여 제 2 슬레이브 장치로 수신하거나 수신된 데이터를 직접 전달시키도록 제 1 슬레이브 장치에게 명령하거나, 외부 네트워크를 통하여 통신될 데이터를 제 1 슬레이브 장치에 전송하도록 제 2 슬레이브 장치에게 명령할 수 있다. 상기 실시예에서, 네트워크 카드는 SDIO 프로토콜을 사용하는 SD 버스 상 카드일 수 있다.
게다가, 비록 상기 설명이 특정 버스/장치 구성 측면들에서 기술되었지만, 대안적인 실시예에서 저장 장치들은 다른 적합한 구성들 또는 어레인지먼트들에 접속될 수 있다. 예를 들어, 도 25에 도시된 실시예에서, 슬레이브 저장 장치들(5404, 5406 및 5408)을 포함하는 각각의 장치는 데이지 체인 배열로 직렬로 접속된다. 상기 어레인지먼트는 다른 것들 중에서 여러 고속 소비자 전자 애플리케이션들에 바람직할 수 있다. 비록 단지 3개의 저장 장치들이 도 25에 도시된 실시예에 도시되지만, 보다 많거나 적은 장치들이 데이지 체인 어레인지먼트에 배열될 수 있다는 것이 인식될 것이다. 일반적으로 2 내지 5 개의 장치들은 통상적으로 상기 어레인지먼트에 접속된다.
데이지 체인 배열은 하나의 장치의 핀들이 이웃하는 장치의 핀들에 전기적으로 접속되는 것을 의미한다. 상기 접속은 하드 솔더링(hard soldering), 인쇄 회로 층 또는 소켓 핀들의 접속에 의한 것일 수 있다. 예를 들어, 저장 장치(5404)로부터 핀들의 제 2 세트는 통신 라인들(5432)의 세트를 통하여 저장 장치(5406)로부터의 핀들의 제 1 세트에 접속될 수 있고, 저장 장치(5406)의 핀들의 제 2 세트는 통신 라인들(5434)의 세트를 통하여 저장 장치(5408)의 핀들의 제 1 세트에 접속될 수 있고, 기타 등등이 있다. 이런 방식으로, 데이지 체인 어레인지먼트에서 제 1 및 최종 장치와 다른 모든 저장 장치들은 두 개의 직접 인접한 이웃 장치에 접속된다. 그러나, 다른 저장 장치들과 달리, 저장 장치(5404)의 핀들의 제 1 세트는 통신 라인들(5430)의 세트를 통하여 마스터 장치로서 사용하는 호스트(5402)와 접속된다. 일 실시예에서, 모든 저장 장치들은 클럭을 공유한다; 그러나, 이것은 각각의 장치가 자신의 클럭을 생성할 수 있기 때문에 요구조건이 아니다.
도시된 실시예에서, 저장 장치들(5404, 5406 및 5408)을 서로 및 호스트(5402)에 상호접속시키는 공통 버스가 없다. 오히려, 이 구성에서, 각각의 장치는 자체적으로 어드레스되지 않은 호스트(5402)로부터의 체인 명령들을 체인 내 다운스트림 다음 장치로 전달한다. 즉, 체인 내 제 1 장치(예를 들어, 저장 장치 5404)와 다른 각각의 저장 장치(예를 들어, 저장 장치들 5406 및 5408)는 체인 내 임의의 업스트림 장치에 의해 호스트(5402)에 결합된다. 즉, 호스트(5402)로부터 특정 저장 장치로 전달되는 통신들 또는 정보는 우선 체인 내 모든 다른 업스트림 장치를 통하여 순차적으로 전달되어야 한다. 실제로, 통신 라인들(5430, 5432 및 5434)과 함께 저장 장치들(5404, 5406 및 5408)은 호스트로부터 저장 장치들로 그리고 저장 장치들로부터 호스트로 통신 및 정보를 전달하기 위해 사용하는 가상 통신 버스를 형성한다.
저장 장치들(5404, 5406 및 5408)이 데이지 체인 구성 내에 배열되는 하나의 예시적 실시예에서, 호스트(5402)는 데이지-체인 장치들의 문자열 아래에 LISTEN/WRITE 명령을 전송할 수 있다. 예를 들어, 호스트(5402)는 저장 장치(5404)에 의해 우선 수신되는 저장 장치(5406)를 목표로 하는 LISTEN/WRITE 명령을 통신 라인들(5430)을 통하여 전송할 수 있다. 그 다음 저장 장치(5404)는 명령이 타깃 저장 장치(5406)에서 수신되는 LISTEN/WRITE 명령을 통신 라인들(5432)을 통하여 전달할 수 있다. LISTEN/WRITE 명령은 특정 시간에서 통신 라인들(5434)에 대해 청취하고 특정 시간에서 시작하여 통신 라인들(5434)로부터 데이터를 기입하도록 저장 장치(5406)에게 명령할 수 있다. 호스트(5402)는 통신 라인들(5430)을 통하여 저장 장치(5408)를 목표로 하는 READ 명령을 전송할 수 있다. READ 명령은 타깃 저장 장치(5408)에 도달하기 전에 통신 라인들(5432 및 5434)을 따라 저장 장치들(5404 및 5406)에 의해 전달될 수 있고 메모리로부터 데이터를 판독하고 특정 시간에서 데이터를 통신 라인들(5434)에 출력하도록 저장 장치(5408)에 명령할 수 있다. 이런 방식으로, 저장 장치(5406)는 LISTEN/WRITE 명령에 의해 명령된 특정 시간에서 통신 라인들(5434)에 청취될 수 있고 통신 라인들(5434)로부터 풀링하는 상기 데이터를 기입할 수 있고, 상기 데이터는 우선 데이터가 호스트(5402)에 전달되지 않고, 저장 장치(5408)로부터 직접 판독되고 저장 장치(5408)에 의해 통신 라인들(5434)에 출력된다.
다른 실시예에서, 저장 장치들(5404, 5406 및 5408)은 도 25에서처럼 데이지 체인 구성으로 배열될 수 있고 별개의 공통 버스는 저장 장치를 그 자체와 그리고 호스트(5402)에 상호접속시킨다. 이런 방식으로, 종래의 어레인지먼트들과 달리, 데이지 체인 장치들 사이의 신호 또는 통신 경로는 버스와 별개이고 구별되며, 그러므로 다시 종래의 접근법들과 달리 저장 장치들 및 호스트(5402) 사이에서 정보 및/또는 데이터를 전달하기 위해 사용될 수 있는 버스 자원들을 소비하지 않는다.
보다 큰 기능 및 그러므로 사용자 만족을 제공하기 위해, 최신 휴대용 소비자 전자 제품들(특히 호스트 장치에 포함된 프로세서)은 이미 제공된 핵심 서비스들(예를 들어, 미디어 플레이어)에 더하여 보다 많은 사용자 지원(보조) 기능들을 수행하도록 요구받는다. 그러나, 이들 휴대용 소비자 전자 제품들이 프로세서 자원들 및 RAM으로 제한되지 않고, 임의의 부가적인 기능들은 프로세서가 느리고 과도한 전력을 소비하게 하여 보다 바람직하지 않은 사용자 경험을 유발한다. 가장 많이 사용되고 의존되는 보조 서비스들 중 하나(특히 사용자에게 액세스할 수 있게 만들어진 복수의 저장된 데이터 파일들로 인해)는 검색/질문 기능들 및 다른 상기 관련 판독 기능들이다. 검색/질문 기능은 데이터가 논리 블록으로서 엄격하게 저장된 경우 고용량 메모리 장치에 적용될 때 문제가 될 수 있다. 예를 들어, 캘리포니아주 밀리타스에 위치하는 샌디스크 인코포레이티드는 모바일 장치에 대하여 현재 팔리는 8GB 플래시 메모리 카드들이고 16GB 지원을 선언한다. 이런 용량은 시간이 진행되고 경쟁이 확장할 때 보다 크게 성장할 것이다. 이런 크기의 상기 높은 용량 메모리들은 각각 마이크로소프트 코포레이션에 의한 PTP(Picture Transfer Protocol) 또는 MTP(Media Transfer Protocol) 같은 오브젝트 전달 프로토콜들을 사용하여 컴퓨터 같은 외부 시스템으로부터 휴대용 소비자 전자 제품으로 전달될 수 있는 문자 그대로 수천의 이미지 파일들(JPEG), 음악 파일들(MP3) 또는 수백의 비디오 파일들(MP4)을 수용할 수 있다. 오브젝트 프로토콜은 특히 디지털 사진 또는 MP3 음악 파일 같은 미리 결정된 양의 데이터를 포함하는 파일들을 전달하는데 적당하다. 예를 들어, 상기 프로토콜들은 디지털 카메라 및 PC 사이에서 디지털 사진을 전달하거나 호스트 컴퓨터(PC 같은)로부터 MP3 플레이어로 MP3 음악파일들을 전달하기 위해 사용될 수 있다. 오브젝트 전달 프로토콜들(MTP 같은)이 '기입-관련' 명령들(예를 들어, CopyObject, MoveObject 등)상에 보다 집중되지만, 그들이 또한 '판독-관련' 명령들(예를 들어, GetPartialObject, GetObjectPropValue 등)을 커버하는 것을 주의해야 한다.
상기 복수의 저장된 데이터 파일들에서, 임의의 검색/질문 기능은 다량의 프로세서 자원들을 소비하고 완료하기 위해 과도한 시간이 걸린다. 이것은 특히 종래의 대량 저장 장치에서 콘텐트가 논리 블록들의 입도(granularity)에 저장되기 때문에 진실이지만 검색/질문 기능들은 데이터가 데이터 오브젝트의 입도에 저장될 때 보다 효과적으로 수행될 수 있다. 예를 들어, 데이터베이스 관리 언어들(예를 들어, SQL)은 특히 오브젝트들의 입도에서 데이터를 질문하거나 조종하기 위해 적당하다(예를 들어, SQL의 경우 SELECT 명령을 통하여 상관 데이터 베이스 관리 시스템 또는 DBMS에 따라 관련 방식으로 구성될 수 있는 데이터 검색). 이것이 통상적으로 보조 서비스들의 환경에서 호스트 프로세스의 대부분의 프로세싱 자원들을 소비하는 검색/질문 동작들(즉, '판독-관련' 명령들)이기 때문에, 만약 질문 언어들(SQL 같은 데이터 베이스 관리 언어들 같은)이 질문/검색 및 등등 같은 판독 동작을 바람직하게 수행하기 위해 휴대용 소비자 전자 제품들에 사용될 수 있다면 보조 서비스들(및 전체적으로 시스템)의 수행의 전체적인 개선을 위해 유리하다. 또한 비록 WQL 같은 데이터베이스 언어들이 또한 '기입-관련 명령들'(예를 들어, CREATE, ALTER 또는 INSERT, UPDATE, DELETE)를 커버하지만, 휴대용 소비자 전자 제품들의 성능을 개선하는 환경에서 상기 데이터베이스 언어들의 가장 바람직한 사용은 질문 같은 판독 기능들의 실행을 위해서인 것을 주의해야 한다.
비록 논리적 블록들 대신 데이터 오브젝트들로서 모든 콘텐트를 저장하는 것이 레거시 제품들 및 설치된 베이스를 갖는 역방향 호환성을 유지하기 위하여 이런 문제에 대답될 수 있다는 것이 명확하지만, "오브젝트 지향" 패러다임으로의 완전한 스위치는 비생산적이고 불필요하다.
그러므로, 여러 실시예에 따라, 호스트 장치 컴퓨팅 자원들의 보다 효과적인 할당은 호스트 장치와 통신하여 로컬 저장 장치(LSD)의 메모리 어레이에 저장된 콘텐트의 이중 표현을 제공함으로써 실행된다. 이중 표현은 LSD에 저장된 콘텐트가 로컬 블록 표현(즉, 레거시 대량 저장 인터페이스를 통하여 액세스할 수 있고) 및 오브젝트 또는 오브젝트 특성들이 조종될 수 있는 데이터 오브젝트 인터페이스를 통하여 액세스할 수 있는 오브젝트 표현 양쪽으로 제공되는 것을 의미한다. 저장된 콘텐트의 이중 표현은 요청 애플리케이션 가장 적합한 형태로 데이터를 제공함으로써 호스트 애플리케이션들의 동작을 스트리밍하기 위해 제공한다. 게다가, 동기화 장치는 로컬 블록 표현 및 오브젝트 표현 사이에서 저장된 콘텐트의 동기화를 제공하도록 수행된다. 특히, 동기화는 저장 어레이의 하나의 부분에 저장된 오브젝트 특성 정보 및 어레이의 대량 저장 부분에 저장된 대응 오브젝트를 동기화하기 위해 제공한다. 따라서, 로컬 블록 표현 및 데이터 오브젝트 표현 양쪽으로 저장된 콘텐트의 이중 표현을 제공하도록 로컬적으로 구성된 적어도 메모리 어레이 및 오브젝트 특성을 보장하는 동기화 서비스가 제공된다.
이런 방식으로, 호스트 애플리케이션의 특정 컴포넌트의 효과적인 실행을 위해 어느 표현이 적당하든 쉽게 액세스될 수 있다. 예를 들어, 호스트 장치가 멀티미디어 플레이어이고 핵심 애플리케이션이 MP3 디코더이면, MP3 디코더는 로컬 블록으로서 저장된 MP3 파일들을 우선적으로 액세스할 것이다. 그러나, 만약 멀티미디어 플레이어의 사용자가 메모리 어레이에 저장된 모든 이용 가능한 오디오 파일들을 검색하기를 원하면, 검색 애플리케이션은 예를 들어, 오브젝트 특성들에 따라 검색 질문을 완성하기 위하여 오브젝트들로서 표현된 저장된 콘텐트를 우선적으로 사용할 것이다. 오브젝트 지향 환경에서, 오브젝트 메타데이터가 헤더 같은 오브젝트 자체의 일부인 것으로 고려된 미리 정의된 특성의 세트를 지칭하는 것이 주의된다. 그러나, 오브젝트 정보 외에, 기술된 실시예는 외부적으로 오브젝트에 정의되고(오브젝트가 저장된 LSD에 의해) 필수적으로 전달되지 않는 오브젝트 특성을 고려한다. 예를 들어, 오브젝트가 액세스되고 및/또는 플레이된 횟수들은 오브젝트 특성이라 고려될 수 있다.
저장된 콘텐트의 이중 표현은 논리 블록의 입도 및 오브젝트의 입도에서 메모리 어레이의 대량 저장 부분에 저장된 콘텐트를 포함할 수 있다. 저장된 오브젝트와 연관된 오브젝트 특성들은 오브젝트 자체가 저장된 부분으로부터 논리적으로 또는 물리적으로 분리된 저장 어레이 부분에 저장될 수 있다. 예를 들어, 오브젝트는 저장 어레이의 공용 부분(즉, HDFS에 보이는 부분)일 수 있는 반면 오브젝트 특성들은 메모리 어레이의 사적 부분에 저장될 수 있다. 게다가, 기술된 실시예는 블록 표현에 저장된 대응하여 동일한 콘텐트를 갖는 오브젝트에 대응하는 오브젝트 특성을 동기화하기 위해 제공한다. 이런 방식으로 대량 저장 부분에 저장된 오브젝트는 메모리 어레이의 다른 부분에 저장된 오브젝트 특성들(파일, 테이블 등으로서 저장됨)과 연관된다. 저장된 오브젝트에 대한 임의의 변화가 연관된 특성들에 반영되는 것을 보장하는 것이 동기화기의 기능이다.
도 26은 호스트 장치(HD)(6102) 및 로컬 저장 장치(LSD)(6104)를 포함하는 컴퓨팅 시스템(6100)을 도시한다. LSD(6104)는 비교적 소형 팩터를 갖는 메모리 카드 같은 제거 가능한 메모리 장치들 형태를 취할 수 있고 카메라들, 핸드-헬드 또는 노트북 컴퓨터들, 네트워크 카드들, 네트워크 기구들, 셋톱 박스들, 핸드-헬드 또는 다른 작은 오디오 플레이어들/레코더들(예를 들어, MP3 장치들), 및 의료 모니터들 같은 전자 제품들에 디지털 데이터를 저장하기 위해 사용될 수 있다. 메모리 카드의 예들은 PC 카드(이전에 PCMCIA 장치), 플래시 카드(예를 들어, 컴팩트 플래시 타입 Ⅰ및 Ⅱ), 보안 디지털(SD) 카드, 멀티미디어 카드(MMC), ATA 카드(예를 들어, 컴팩트 플래시 카드), 메모리 스틱, 스마트미디어 카드를 포함한다. 게다가, LSD(6104)는 캘리포니아주 샌디스크 코포레이션에 의해 제조된 SD 호환 가능 iNANDTM 내장 플래시 드라이브 같은 비-제거 가능 메모리 장치들 형태를 취할 수 있다. LSD(6104)는 HD/LSD 인터페이스(6106)에 의해 호스트 장치(6102)와 통신할 수 있다. HD/LSD(6106)는 HD(6102) 및 LSD(6104)가 기계적으로 접속할 수 있는 기계적 엔티티(소켓 또는 상호접속 버스 같은)로서 구성될 수 있다는 것을 주의해야 한다. 몇몇 실시예에서, HD/LSD(6106)는 무선 인터페이스 형태를 취할 수 있다. HD(6102)는 프로세서를 포함한다. 그러나, 간략화를 위해, HD(6102)에 포함된 프로세서는 이런 논의에서 추가로 도시되거나 언급되지 않지만, 그럼에도 불구하고 존재되는 것으로 가정된다. 통상적으로, LSD(6104)는 HD(6102)에 의해 제공된 인터페이스 외에 HD(6102) 외부의 장치에 임의의 인터페이스를 사용하지 않는다. HD(6102)는 레거시 대량 저장 경로(6107)를 포함한다. 레거시 대량 저장 경로(6107)는 레거시 대량 저장 드라이버(6110)와 통신하는 호스트 장치 파일 시스템(HDFS)(6108)(통상적으로 호스트 장치 운영 시스템(HDOS)의 일부임)을 포함한다. HDFS(6108)가 임의의 수의 파일 시스템들을 바탕으로 동작하도록 구성될 수 있다는 것을 주의해야 한다. 예를 들어, HDFS(6108)는 파일 할당 테이블(FAT) 기반 파일 시스템일 수 있다. 그러나, 다른 실시예에서, HDFS(6108)는 다른 것들 중에서 ext2, ext3, NTFS 및 JFFS를 기반으로 하는 파일 시스템일 수 있다. 따라서, 기술된 실시예가 다른 파일 시스템들로 실행될 수 있고, 다음 설명은 FAT 기반 파일 시스템 실시예에 집중한다. 예를 들어, FAT 파일 시스템은 종래 기술에서 공지된 FAT-16 또는 FAT-32 파일 시스템일 수 있다.
기술된 실시예에서, HDFS(6108)는 대량 저장 경로(6107) 같은 논리적 인터페이스 또는 물리적 인터페이스 형태를 취할 수 있는 대량 저장 경로를 사용하여 LSD 블록 명령(6112)을 LSD(6104)에 내린다. 레거시 대량 저장 드라이버(6110)는 차례로 HD/LSD 인터페이스(6106)에 의해 LSD 블록 명령(6112)을 LSD(6104)에 전달할 수 있다. LSD(6104)에 저장된 데이터의 오브젝트 표현을 사용하기 위해, HD(6102)는 HD/LSD 저장(물리적) 인터페이스/버스(6106)를 통하여 LSD(6104)ㄹ 오브젝트-관련 명령들(6113)을 전달하도록 구성된 오브젝트 바탕(OB) 인터페이스(6109)(논리적 인터페이스 또는 물리적 인터페이스로서 구성될 수 있음)를 사용할 수 있다. OB 인터페이스(6109)가 드라이버 레벨 또는 OS 레벨 또는 심지어 애플리케이션 레벨(상기 경우 대량 저장 경로 6107를 사용할 것임)에서 통합될 수 있다는 것이 고려된다. 기술된 실시예에서, OB 인터페이스(6109)는 논리적 IP(인터넷 프로토콜) 네트워크 인터페이스를 사용할 수 있고 상기 경우 OB 인터페이스(6109)는 IP를 통하여 일반적으로 정의된 애플리케이션, 오브젝트-기반 프로토콜들을 전달할 수 있다.
HD(6102)는 LSD(6104)와 통신하기 위하여 HDFS(6108) 및 레거시 대량 저장 드라이버(6110)를 사용할 수 있는 호스트 애플리케이션(6114)을 포함할 수 있다. 호스트 애플리케이션(6114)은 LSD(6104)에 저장된 콘텐트의 관리 및/또는 실행시 호스트 애플리케이션(6114)을 돕기 위해 사용될 수 있는 보조 서비스들(키워드 검색, 플레이리스트 변경 등)을 제공하기 위해 배열된 보조 서비스들 애플리케이션(6120) 및 핵심 서비스들(플레이 미디어 파일들, 디스플레이 이미지들 등)을제공하도록 배열된 하나의 애플리케이션(6118)을 포함할 수 있다. 보조 서비스들이 또한 호스트 애플리케이션(6114)로부터의 지원 없이 LSD(6104)로부터 작동할 수 있다는 것을 주의해야 한다. 이런 방식으로, LSD(6104)는 HD(6102)와 무관하거나 이들 경우들에서 적합한 것으로 생각되는 HD(6102)의 지원시 보조 서비스들의 자신의 세트를 제공할 수 있다. 상기 보조 서비스들이 여기에 기술된 아키텍쳐의 임의의 레벨로 동작할 수 있다는 것을 주의해야 한다. 예를 들어, 애플리케이션(6120)은 운영 시스템(OS)의 일부일 수 있다. 게다가, 애플리케이션(6120)은 애플리케이션(6120)이 LSD(6104)로부터 분리되지만 HD(6102)/LSD(6104)와 통신하는 원격 장치 또는 다른 LSD에 잔류할 수 있는 LSD(6104) 내에 저장된 데이터의 오브젝트-기반 표현을 사용하는 원격 애플리케이션일 수 있다.
LSD(6104)는 적어도 제 1 부분(6126) 및 제 2 부분(6128)을 포함하도록 구성된(로컬적으로 또는 물리적으로) 제어기(6122) 및 저장 어레이(6124)를 포함할 수 있다. 저장 어레이(6124)가 메모리 셀들의 어레이(플래시 같은)로 형성될 수 있다는 것을 주의해야 한다. 이런 특정 경우에서, 비록 저장 어레이(6124)가 플래시 메모리 셀들의 어레이인 것으로 가정될 수 있지만, 실시예는 상기 실시예들이 메모리 셀의 임의의 적합한 타입이 사용될 수 있기 때문에, 플래시 타입 메모리 셀들로 제한되지 않는다. 제어기(6122)는 HDFS(6108)의 명령으로 작동하는 적어도 제 1 부분(6126)을 관리할 수 있는 플래시 관리자(6130)를 포함할 수 있다. 특히 유용한 어레인지먼트에서, 데이터는 LBA 프로토콜을 사용하여 제 1 부분(6126)에 저장될 수 있다. 따라서, 대량 저장 영역(6126)에 저장된 데이터 블록들의 위치는 각각의 블록이 예를 들어, 512 또는 1024 바이트들 정도인 LBA 프로토콜을 사용하여 지정될 수 있다. 이런 방식으로, 대량 저장 영역(6126)은 임의의 고려된 레거시 대량 저장 아키텍쳐들과 완전히 역방향 호환할 수 있다(즉, 레거스 호스트들과 관련하여 작동할 수 있는). 그러므로 LSD(6104)는 레거시 인터페이스들, 버스들, 및 레거시 제품들의 설치된 베이스와 완전한 호환성을 제공하는 모든 연관된 프로토콜들을 사용하여 동작할 수 있다. 이런 방식으로, 대량 저장 영역(126)은 데이터 오브젝트 또는 로컬 데이터 블록으로서 표현된 데이터를 저장하기 위해 사용될 수 있다.
제어기(6122)는 대량 저장 영역(6126)에 저장된 데이터 오브젝트(6136)에 대응하고 상기 데이터 오브젝트를 대표하는 데이터 오브젝트 특성 정보(6134)를 제공하도록 배열된 오브젝트 기반 관리 시스템(OBMS)(6132)을 포함할 수 있다. OBMS(6132)의 종래의 예는 데이터베이스(DB) 내 데이터의 구성, 저장, 관리 및 검색을 제어하도록 설계된 데이터베이스 관리 시스템(DBMS)일 수 있다. OBMS는 임의의 DB 질문/관리 언어(SQL 같은)에 응답할 수 있다. 따라서, 오브젝트는 DB 포맷에 따라, 또는 보다 특히 데이터 구조들로서(즉; 필드들, 레코드들, 파일들 및 오브젝트들)로서 영역(6126)에 저장될 수 있다. OBMS(6132)는 플래시 관리자(6130)의 상부 상에 논리적 오브젝트 관리 층을 제공함으로써 영역들(6126 및 6128)에 액세스/관리하기 위하여 플래시 관리자(6130)를 사용할 수 있다. 그러나, 몇몇 실시예에서, OBMS(6132)는 플래시 관리자(6130)로부터 분리된 자신의 플래시 관리 층이 내장될 수 있다.
OBMS(6132)에 의해 제공된 오브젝트 관리 서비스는 메모리 저장 영역(6126)에 저장된 데이터 오브젝트(6136)와 연관된 오브젝트 특성 정보를 검색 및 저장할 수 있다. 데이터 오브젝트 정보는 데이터 오브젝트 정보 데이터세트를 포함할 수 있다. 게다가, 영역(6126)에 저장된 오브젝트와 연관된 클러스터들/블록의 위치는 또한 영역(6128)에 저장될 수 있는 오브젝트 특성의 일부로서 고려될 수 있다. 기술된 실시예에서, 데이터 오브젝트 정보 데이터세트는 오브젝트(6136)의 핵심 특성의 개요를 제공할 수 있다. 이들 핵심 특성들은 예를 들어, 장치들 상에서 데이터 오브젝트를 연관시키고 계층적 파일 시스템들을 기술하기 위해 사용될 수 있는 오브젝트 연관성들 및 오브젝트(6136)의 데이터 컴포넌트 크기를 포함할 수 있다. 데이터 오브젝트 특성들이 오브젝트들 자체로부터 분리되는 오브젝트-기술 정보를 교환하기 위한 메커니즘을 제공할 수 있다는 것이 주의된다. 오브젝트 특성의 장점들 중 하나는 파일 시스템과 관계없이 큰 저장들의 빠른 열거를 허용하는 것이다.
대량 저장 영역(6126)에 저장된 오브젝트들이 영역(6128) 내에 일치하는 오브젝트 표현을 갖는 것을 보장하기 위하여, 동기화기(6138)(LSD 6104 또는 HD 6102에 잔류할 수 있음)는 대량 저장 영역(6126)에 저장된 업데이트된 오브젝트에 대응하는 영역(6128)에 저장된 오브젝트 특성을 업데이트하기 위해 사용될 수 있다. 업데이팅은 데이터 오브젝트와 연관된 임의의 특성을 변화 또는 변경하는 대량 저장 영역(6126) 내에 저장된(또는 저장될) 데이터 파일 상 또는 상기 데이터에 수행될 수 있는 임의의 동작을 의미한다. OBMS(6132)에 관리되고 '오브젝트 표현'(즉, 동기화기 6138에 의해 핸들링됨)을 통하여 제공되는 특성의 수 및 성질이 보조 애플리케이션(6120) 또는 LSD(6104) 자체, 또는 둘 다에 의해 정의될 수 있다. 또한, OBMS(6132)에 의해 관리되는 오브젝트 특성들은 오브젝트들 자체에 따라 다를 수 있다. 상기 오브젝트 특성들은 예를 들어, 이름, 크기, 몇몇에 대한 저자들, 다른 것에 대한 사용자 생성 태그들, 및 콘텐트가 플레이된 횟수를 포함할 수 있다. 일단 콘텐트가 HD(6102) 또는 LSD(6104)에 의해 식별되면, 그 콘텐트와 연관된 정보의 다른 세트들은 OBMS(6132)에 의해 관리될 수 있다.
동기화기(6138)는 양방향 동기화 동작이라 지칭되는 것을 수행할 수 있다. 예를 들어, 대량 저장 경로(6107)를 통하여 전달된 대량 저장 영역(6126) 상 기입 명령은 오브젝트(OB) 경로(6111)를 통한 판독 및/또는 조종을 위해 이용할 수 있는 새로운 또는 업데이트된 오브젝트를 유발할 수 있다. 게다가, OB 인터페이스(6109)에 의해 전달되는 기입 관련 명령(예를 들어, 오브젝트 업데이트 또는 이동)은 대량 저장 경로(6107)를 통한 판독 또는 조종을 위하여 이용 가능할 수 있다. 그러므로, OB 인터페이스(6109)(적어도 드라이버 6110을 사용함)에 의해 전달된 '기입'-바탕 명령(예를 들어, 오브젝트 변형, 오브젝트 이동)은 동기화기(6138)에 의해 영역(6128)과 동기화될 수 있다.
그러므로, 기입-관련 명령(예를 들어, 오브젝트 변형 또는 이동)이 OB 경로(6111)를 사용하여 OB 경로(6109)를 통해 LSD(6104)에 전달될 때, 오브젝트는 대량 저장 영역(6126)에 기입되고 대응 특성들은 영역(6128) 내 동기화기(6138)에 의해 업데이트된다. 그러나, 영역(6126)이 HDFS(6108)에 의해 관리되기 때문에(HD 6102 상에서 임의의 FAT 정보를 캐싱하는 것을 포함하는 관리), HDFS(6108)는 영역(6126) 상에서 내부적으로 발생하는 임의의 변형들을 인식하지 못한다. 그러므로 오브젝트가 대량 저장 영역(6126) 내에 기입될 때 특성들이 영역(6128) 내에서 궁극적으로 동기화되는 것을 보장하기 위하여, HDFS(6108)에 의해 인식되는 대량 저장 영역(6126) 내에 배치된 미리 결정된 크기의 플레이스홀더들을 사용한 내부 기입 명령은 사용될 수 있다.
도 27은 기술된 실시예에 따른 동기화기(6138)의 특정 실시예를 도시한다. 동기화기(6138)는 HD(6102) 및 LSD(6104) 사이의 대량 저장 경로에 결합될 수 있고 그러므로 HD(6102)로부터 LSD(6104)로 전달된 임의의 LSD 블록 명령(6112)을 관찰할 수 있다. 기술된 실시예에서, LSD 블록 명령(6112)은 데이터 부분(6202) 내 정보 및 데이터를 포함할 수 있고 수행될 동작 타입(판독, 기입, 카피 등)으로 제어기(6122)에 명령하는 명령 인스트럭션 부분(6204)을 포함할 수 있는 FAT 블록-기반 명령이다. 동기화기(6138)는 오브젝트의 현저한 특성을 추출하기 위해 배열된 적어도 오브젝트 특성 추출 유니트(6210)를 포함할 수 있다. 추출 유니트(6210)는 정보 유니트(6212)에 전달된 적합한 오브젝트 특성들(파일이름, 포맷, 파일 크기 등)을 추출할 수 있다. 언제든, 업데이트된 정보는 영역(6128) 내 적합한 데이터 오브젝트 특성을 차례로 식별 및 업데이트할 수 있는 OBMS(6132)에 전달될수 있다.
게다가, 데이터가 대량 저장 영역(6126)에 기입될 때, 동기화기(6138)가 대량 저장 영역(6126)에 기입된 데이터의 'FAT 구조'를 이해하기 때문에, 동기화기(6138)는 LSD 블록 명령(6112)을 관찰하고 "온 더 플라이(on the fly)"에서 오브젝트 특성을 식별 및 업데이트할 수 있다. 예를 들어, 데이터 추출 유니트(6210)는 사용 데이터 수집기(6210) 형태를 취할 수 있다. 사용 데이터 수집기(6210)는 명령들(6112)을 관찰하고 이를 바탕으로 예를 들어, 저장 영역(6128) 내 특성으로 저장될 사용 카운터들 같은 데이터 액세스 특성을 결정할 수 있다. 명령들(6112)이 HDFS(6208)의 명령을 작동하는 제어기(6122)의 플래시 관리자(6130)에 제공되지만, 다른 실시예에서, 명령들 또는 다른 신호들은 HD(6102)로부터 LSD(6104)로 제공되고, HDFS 동작들의 결과가 아니다. 예를 들어, 상기 명령 또는 다른 신호들은 HDFS 동작들의 결과로서가 아닌 드라이버 레벨 동작들 같은 다른 동작을 바탕으로 제공될 수 있다. 데이터 액세스 특성들(6206)은 데이터 액세스를 특성화하기 위한 판독 및/또는 기입 동작들의 빈도수를 바탕으로 사용 데이터 수집기(6210)에 의해 추리될 수 있다.
어느 경우에나, 동기화기(6138)는 동기화를 요구하는 임의의 특성을 식별하기 위하여 비동기적으로 또는 백그라운드에서 그리고 영역(6126)으로부터 판독될 수 있다.
도 28은 LSD(6104)로의 대량 저장 경로(6107)에 의해 전달된 판독 명령(6302)에 의해 대량 저장 영역(6126)에 저장된 데이터를 판독하는 것을 요구하는 핵심 서비스를 실행하는(MP3 파일을 판독하는 것과 같은) 핵심 애플리케이션(6118)을 도시한다. 동기화기(6138)는 액세스된 오브젝트의 특성들이 변화하지 않기 때문에, 그러므로 OBMS(6132)에 의해 영역(6128) 내 대응 특성을 업데이트할 필요가 없다는 것을 결정한다(그렇지 않으면, 예를 들어, 카운터가 업데이트된다).
도 29는 HD(6102)가 대량 저장 경로(6107)에 의해 LSD(6104)에 전달된 기입 명령(6402)(또는 대량 저장 영역 6126에 저장된 오브젝트를 변형시킬 임의의 다른 명령)을 내리는 것을 도시한다. 동기화기(6138)는 대량 저장 영역(6126) 내 오브젝트와 연관된 특성들이 명령(6108)의 실행에 의해 변형되는 것을 관찰하고 영역(6128) 내에 저장된 오브젝트 특성을 OBMS(6132)가 업데이트하게 함으로써 응답한다. 동기화기(6138)가 또한 임의의 변형들이 그 내부에 저장된 오브젝트들에 발생하였는지를 결정하기 위해 주기적으로 및 정규적으로 대량 저장 영역(6126)에 판독에 의해 대량 저장 영역(6126) 내 콘텐트의 상태를 정규적으로 검사할 수 있다(예를 들어, 백그라운드에서)는 것이 주의된다. 몇몇 실시예에서, 동기화기(6138)는 대량 저장 영역(6126)의 패턴들을 식별하고 이들 패턴들을 바탕으로 대량 저장 영역(6126)에 저장된 오브젝트의 특성을 추론할 수 있다. 어느 경우나, OBMS(6132)는 저장 영역(6128)에 저장된 적합한 오브젝트 특성을 업데이트한다.
도 30은 기술된 실시예들 중 하나에 따른 프로세스(6500)를 나타내는 흐름도를 도시한다. 프로세스(6500)는 6502에서 데이터 저장 어레이를 제공함으로써 시작한다. 6504에서, 논리적 데이터 블록들 형태의 데이터는 데이터 저장 어레이에 제공된다. 6506에서, 논리적 데이터 블록들은 제 1 논리적 인터페이스에 의해 관리된다. 6508에서, 논리적 데이터 블록들에 대응하는 데이터 오브젝트는 데이터 저장 어레이에 제공된다. 6510에서, 데이터 오브젝트는 제 2 논리적 인터페이스에 의해 관리된다. 6512에서, 논리적 데이터 블록으로서 저장된 데이터는 제 1 인터페이스에 의해 변형된다. 6514에서, 변형된 데이터는 제 2 인터페이스 및 제 1 인터페이스에 의해 액세스할 수 있게 된다. 6516에서, 오브젝트 특성의 미리 결정된 세트는 6514와 동시에 관리된다.
도 31은 호스트 장치(204) 내에서 일반적으로 발견되는 부가적인 컴포넌트들을 도시하는 대표 시스템(900)을 도시한다. 시스템(900)은 중앙 프로세싱 유니트(CPU)(910), 랜덤 액세스 메모리(RAM)(920), 판독 전용 메모리(ROM)(930), 및 주 저장 장치들(940 및 950)을 포함한다. 종래에 잘 공지된 바와 같이, ROM(930)은 데이터 및 명령들을 단일 방향으로 CPU(910)로 전달하도록 동작하고, RAM(920)은 통상적으로 양방향으로 데이터 및 명령들을 전달하기 위해 사용된다. CPU(910)는 일반적으로 임의의 수의 프로세서들을 포함할 수 있다. 양쪽 주 저장 장치들(940 및 950)은 임의의 적합한 컴퓨터-판독 가능 미디어를 포함할 수 있다. CPU들(910)은 컴퓨터 하드웨어 및 소프트웨어 기술들에서 당업자에게 친밀한 하나 또는 그 이상의 입력/출력 장치들(960)에 결합된다.
기술된 실시예에서, 모바일 장치들(예를 들어, 휴대용 미디어 장치들)은 서로 통신할 수 있다. 이런 타입의 통신은 피어-투-피어 상호작용이라 지칭될 수 있다. 이와 관련하여, 하나의 모바일 장치는 다른 모바일 장치와 직접적으로 통신(예를 들어, 유니캐스트)할 수 있다. 다른 실시예에서, 하나의 모바일 장치는 복수의 다른 모바일 장치들과 통신할 수 있다(예를 들어, 브로드캐스트, 애니캐스트 또는 멀티캐스트). 피어-투-피어 환경에서, 하나의 모바일 장치는 중간 근처에서 하나 또는 그 이상의 다른 전자 장치들(모바일이든 고정식이든)과 통신할 수 있다. 데이터 공유는 상기 통신이 이용 가능할 때 수행될 수 있다.
모바일 장치와 컴퓨팅 장치(홈 컴퓨터 또는 다른 모바일 장치와 같은) 사이에서 데이터 전달이 수행될 수 있다. 통상적으로, 모바일 장치 및 컴퓨팅 장치는 특정 사용자와 연관된다. 예를 들어, 모바일 장치가 홈 컴퓨터(또는 홈 네트워크)의 범위 내에 있을 때, 데이터 전달은 모바일 장치 및 홈 컴퓨터 사이에서 수행될 수 있다. 데이터 전달은 둘 또는 그 이상의 모바일 장치들 사이, 또는 둘 또는 그 이상의 비-모바일 장치들 사이에서 이루어질 수 있다. 데이터 전달은 임의의 사용자 작용 없이 자동일 수 있거나 대안적으로 사용자에 의해 수동 승인을 요구할 수 있다. 네트워크 장치들은 식별 번호 또는 다른 적합한 메커니즘을 통하여 서로 연관될 수 있다.
데이터를 수신, 전송 및/또는 저장할 수 있는 모바일 장치 또는 비-모바일 장치는 "데이터 장치"라 지칭될 수 있다. 데이터가 데이터 장치에 도달하는 방식은 실행에 좌우될 수 있다. 예를 들어, 데이터는 데이터 장치에 직접 전달될 수 있거나, 데이터는 데이터 장치에 간접적으로 전달될 수 있다. 예를 들어, 데이터 전달은 하나의 데이터 장치 대 다른 데이터 장치 사이에서 이루어질 수 있다. 대안적으로, 하나의 데이터 장치는 다른 데이터 장치가 수신 데이터 장치에 목표된 데이터를 전달하게 할 수 있다.
공유된 데이터는 파일 전달 또는 스트리밍에 의해 수신 장치에 전달될 수 있다. 전달된 데이터는 하나 또는 그 이상의 데이터 장치에 의해 수신될 수 있다. 데이터 장치들의 예들은 미디어 플레이어, PDA, 스피커 유니트, 무선 전송기/수신기 유니트 등등을 포함한다. 데이터 장치들의 사용자들은 또한 데이터 공유를 통하여 콘텐트를 생성 및 분배할 수 있다. 스트리밍은 데이터를 동시에 수신하는 데이터 장치들의 수를 제한하기 위하여 제한될 수 있다. 다른 한편, 만약 데이터 장치들의 사용자들이 스트리밍 콘텐트에 대한 가입자들이면(즉, 가입하면), 스트리밍은 가입자들에게 제한될 수 있다. 미디어 아이템 메타데이터와 연관된 미디어 아이템 콘텐트의 몇몇 부분을 관리하는 것은(저장하는 것 포함) 또한 미디어 아이템 콘텐트의 스트리밍을 용이하게 하기 위해 수행될 수 있다. 예를 들어, 사용자는 나머지 콘텐트의 스트리밍이 시작하기 전에 미디어 아이템 콘텐트 이전에 저장된 부분을 플레이하기 시작한다.
데이터는 구입된 후 공유될 수 있다. 예를 들어, 수신부는 원격 서버로부터 데이터를 구매할 수 있다. 원격 서버는 구입된 데이터가 수신부의 데이터 장치에 전달되게 한다. 구매는 실시간으로 수행되거나 추후 시점까지 다를 수 있다. 그 후, 구매된 데이터는 수신부의 데이터 장치로부터 다른 데이터 장치로 공유될 수 있다.
예를 들어, 작업 환경 또는 다른 네트워크 환경에서, 사용자가 이용자의 사무실에 일하러 올 때, 사용자의 모바일 장치는 데이터를 사용자의 작업 컴퓨터 또는 사무실에 대한 네트워크 서버에 전달할 수 있다. 데이터 전달은 임의의 사용자 작용 없이 자동적일 수 있거나 대안적으로 사용자에 의한 수동 승인을 요구할 수 있다. 모바일 장치의 사용자는 또한 동료들의 모바일 장치들 또는 네트워크의 다른 사용자들과 통신하여 데이터를 교환할 수 있다.
특정 환경과 무관하게, 데이터 전달은 무선일 수 있다. 무선 데이터 전달은 무선 네트워크에 의해 추진될 수 있다. 하나의 모바일 장치는 하나의 모바일 장치로부터 다른 모바일 장치 또는 고정식 컴퓨팅 장치로 유니캐스트 방식으로 데이터를 무선으로 전송할 수 있다. 추가로, 하나의 모바일 장치는 복수의 다른 모바일 장치에 멀티캐스트 또는 브로드캐스트 방식으로 데이터를 무선으로 전송할 수 있다. 임의의 홈-서버 컴퓨터가 컴퓨팅 장치(200)가 속하는 네트워크의 임의의 수의 다른 데이터 저장 장치들 상에 잔류할 수 있다는 것이 주의된다.
본 발명의 장점은 여러가지이다. 다른 실시예 또는 실행은 하나 이상의 다음 장점을 양산할 수 있다. 본 발명의 한 가지 장점은 레거시 장치가 시스템 하드웨어를 변형하는 것을 고려하지 않고 부가되거나 제거될 수 있다는 것이다. 본 발명의 다른 장점은 변형 없이 임의의 호스트 컴퓨터에 사용될 수 있어서 본 발명의 비용을 감소시키고 응용성을 증가시킨다는 것이다. 본 발명의 다른 장점은 LSD의 데이터가 HD의 기능성을 변형하는 것을 고려하지 않고 인덱스될 수 있다는 것이다. 게다가, 인덱스는 비록 LSD가 다중 HD들에 사용되더라도, 특정 LSD와 연관될 수 있다.
본 발명의 많은 특징과 장점은 기입된 상세한 설명으로부터 명백하고, 따라서 첨부된 청구항들이 본 발명의 상기 모든 특징들 및 장점들을 커버하는 것이 의도된다. 게다가, 복수의 변형들 및 변화들이 당업자에게 쉽게 발생할 것이기 때문에, 도시되고 기술된 명확한 구성 및 동작으로 본 발명을 제한하는 것이 목표되지 않는다. 따라서, 모든 적합한 변형들 및 등가물들은 본 발명의 범위 내에 속하는 것으로 재분류될 수 있다.
Claims (15)
- DRM 스킴(scheme)에 따라 디지털 콘텐트 제공자에 의해 부착된 적어도 하나의 제한을 갖는 보호된 디지털 콘텐트를 획득 및 소비하는 방법으로서,
상기 방법은, 메모리 어레이를 갖는 로컬 저장 장치(LSD)를 포함하는 시스템에 의해 수행되고, 상기 LSD는 상기 메모리 어레이의 적어도 일부를 관리하기 위하여 배열된 적어도 하나의 호스트 장치 파일 시스템(HDFS)을 갖는 호스트 장치(HD)와 결합된, 보호된 디지털 콘텐트를 획득 및 소비하는 방법에 있어서,
상기 방법은,
상기 LSD에 의해 상기 보호된 디지털 콘텐트를 획득하는 단계와,
상기 LSD에 의해 상기 메모리 어레이 내에 상기 획득된 보호 디지털 콘텐트를 안전하게 저장하는 단계로서, 상기 획득 및 안전하게 저장하는 단계는 각각 상기 HDFS에 의해 개시되지 않고 상기 DRM 스킴에 따르는, 상기 단계와,
상기 안전하게 저장된 보호 디지털 콘텐트의 적어도 일부를 디지털 데이터 스트림으로 전환하고,
상기 LSD에 의해 상기 디지털 데이터를 스트리밍함으로써,
상기 보호된 디지털 콘텐트를 소비하는 단계를
포함하고,
만약 상기 디지털 데이터 스트림이 사용 제한인 부착된 적어도 하나의 제한을 가지면, 상기 LSD는 상기 사용 제한을 시행하는, 보호된 디지털 콘텐트를 획득 및 소비하는 방법. - 제 1항에 있어서, 상기 보호된 디지털 콘텐트는 디지털 콘텐트 및 대응하는 RO(rights objects)를 포함하고, 상기 사용 제한은 상기 보호된 디지털 콘텐트의 인증되지 않은 카피를 방지하거나, 상기 보호된 디지털 콘텐트의 미리 결정된 횟수의 사용을 허용하는, 보호된 디지털 콘텐트를 획득 및 소비하는 방법.
- 제 1항 또는 제 2항에 있어서, 상기 메모리 어레이는,
상기 HDFS에 보이는 상기 HDFS에 의해 관리되는 적어도 제 1 부분과 상기 HDFS에 의해 관리되지 않고 상기 HDFS에 보이지 않는 적어도 제 2 부분을
더 포함하고,
상기 보호된 디지털 콘텐트를 안전하게 저장하는 단계는,
상기 HDFS에 보이는 상기 메모리 어레이의 제 1 부분 내에 인크립트된 디지털 콘텐트를 저장하는 단계와,
상기 HDFS에 보이지 않는 상기 메모리 어레이의 제 2 부분에 상기 디지털 콘텐트에 대응하는 상기 RO를 저장하는 단계를
더 포함하는, 보호된 디지털 콘텐트를 획득 및 소비하는 방법. - 제 1항 또는 제 2항에 있어서, 상기 보호된 디지털 콘텐트를 안전하게 저장하는 단계는,
상기 보호된 디지털 콘텐트를 인크립팅하는 단계와,
상기 HDFS에 보이는 상기 메모리 어레이의 상기 제 1 부분에 상기 인크립트된 보호된 디지털 콘텐트를 저장하는 단계를
더 포함하는, 보호된 디지털 콘텐트를 획득 및 소비하는 방법. - 제 1항에 있어서, LSD는 상기 디지털 데이터 스트림을 상기 LSD 외부의 에이전트(agent)에 스트리밍하고, 만약 상기 적어도 하나의 제한이 액세스 제한을 포함하면, 상기 외부 에이전트는, 상기 외부 에이전트가 상기 제 1 DRM 스킴에 허용 가능한 액세스 증명서를 갖는 인증된 외부 에이전트인 경우에만, 상기 디지털 데이터 스트림을 프로세스할 수 있는, 보호된 디지털 콘텐트를 획득 및 소비하는 방법.
- 제 5항에 있어서, 상기 외부 에이전트는 인터페이스에 의해 상기 HD에 접속된 제 2 LSD 내에 잔류하는, 보호된 디지털 콘텐트를 획득 및 소비하는 방법.
- 제 1항에 있어서, 상기 외부 에이전트는 상기 HD에서 작동하는 로컬 디지털 미디어 플레이어 렌더러 애플리케이션(local digital media player renderer application)인, 보호된 디지털 콘텐트를 획득 및 소비하는 방법.
- 제 1항에 있어서, 상기 보호된 디지털 콘텐트는 상기 HD와 상기 LSD 외부에 있고 네트워크 내에 포함되는 원격 장치(RD)로부터 획득되는, 보호된 디지털 콘텐트를 획득 및 소비하는 방법.
- 제 1항에 있어서,
상기 보호된 디지털 콘텐트를 획득하기 전에 상기 LSD와 상기 RD를 상호 인증하는 단계와,
상기 상호 인증이 성공적으로 결론날 때만 상기 RD로부터 상기 LSD에 의한 상기 디지털 콘텐트의 획득을 개시하는 단계를
더 포함하는, 보호된 디지털 콘텐트를 획득 및 소비하는 방법. - 제 1항에 있어서, 상기 HD는 네트워크에 상기 HD 액세스를 제공하는 네트워크 인터페이스를 더 포함하는, 보호된 디지털 콘텐트를 획득 및 소비하는 방법.
- 제 1항에 있어서, 상기 보호된 디지털 콘텐트를 획득하는 단계는,
상기 LSD와 상기 RD 사이에 통신 경로를 설정하도록 상기 네트워크 인터페이스를 사용하기 위해 상기 RD에 의해 상기 HD를 프롬프팅하는 단계로서, 일단 상기 통신 경로가 상기 HD에 의해 설정되면 상기 통신 경로를 유지하는 것 외에 상기 HD에 의한 추가 개입이 없는, 상기 단계, 또는
상기 LSD와 상기 RD 사이에 통신 경로를 설정하도록 상기 네트워크 인터페이스를 사용하기 위해 상기 LSD에 의해 상기 LD를 프롬프팅하는 단계로서, 일단 상기 통신 경로가 상기 HD에 의해 설정되면, 상기 통신 경로를 유지하는 것 외에 상기 HD에 의한 추가 개입이 없는, 상기 단계와,
상기 LSD 및 상기 RD에 의해 상기 통신 경로에서 논리적으로 상호작용시키는 단계로서, 상기 논리 상호작용은 상기 HD에 보이는, 상기 단계를
포함하는, 보호된 디지털 콘텐트를 획득 및 소비하는 방법. - 제 11항에 있어서, 상기 논리 상호작용은, 상기 RD가 상기 RD로부터 상기 LSD로 상기 보호된 디지털 콘텐트를 전송하고 상기 LSD가 상기 메모리 어레이에 상기 보호된 디지털 콘텐트를 저장하도록 하는 RD 명령을 포함하거나, 상기 논리 상호작용은, 상기 RD가 상기 RD로부터 상기 LSD로 상기 디지털 콘텐트를 전송하는 것을 상기 LSD가 요청하도록 하는 LSD 명령을 포함하는, 보호된 디지털 콘텐트를 획득 및 소비하는 방법.
- 제 12항에 있어서, 상기 안전하게 저장된 보호 디지털 콘텐트의 적어도 일부를 상기 디지털 데이터 스트림으로 전환하는 단계는,
상기 메모리 어레이로부터 상기 보호된 디지털 콘텐트를 판독하는 단계와,
상기 메모리 어레이로부터 판독된 상기 보호된 디지털 콘텐트를 적어도 하나의 데이터 스트림으로 배열하는 단계를
포함하는, 보호된 디지털 콘텐트를 획득 및 소비하는 방법. - 제 13항에 있어서, 상기 LSD에 의해 상기 메모리 어레이로부터 상기 보호된 디지털 콘텐트를 스트리밍하는 단계는,
스트리밍 채널을 형성하는 단계와,
상기 스트리밍 채널을 통해 상기 보호된 디지털 콘텐트를 스트리밍하는 단계를
포함하는, 보호된 디지털 콘텐트를 획득 및 소비하는 방법. - 제 14항에 있어서, 상기 스트리밍 채널이 안전한 스트리밍 채널일 것을 상기 DRM이 요구하면,
상기 안전한 스트리밍 채널을 형성하는 단계와,
상기 안전한 스트리밍 채널을 통하여 상기 보호된 디지털 콘텐트를 스트리밍하는 단계로서, 상기 보호된 디지털 콘텐트는 MP3 오디오 파일 및/또는 비디오 파일을 포함하는 디지털 미디어 파일이고, 상기 시스템은 다른 DRM 스킴에 따라 부착된 적어도 하나의 제한을 갖는 다른 보호된 디지털 콘텐트를 동시에 획득하고 소비하도록 배열된, 상기 단계인,
보호된 디지털 콘텐트를 획득 및 소비하는 방법.
Applications Claiming Priority (18)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US1864408P | 2008-01-02 | 2008-01-02 | |
US61/018,644 | 2008-01-02 | ||
US1897908P | 2008-01-04 | 2008-01-04 | |
US61/018,979 | 2008-01-04 | ||
US12/029,356 US8583878B2 (en) | 2008-01-02 | 2008-02-11 | Storage device having direct user access |
US12/029,356 | 2008-02-11 | ||
US12/036,440 US8370850B2 (en) | 2008-01-02 | 2008-02-25 | Cache management |
US12/036,440 | 2008-02-25 | ||
US12/045,472 US8359654B2 (en) | 2008-01-02 | 2008-03-10 | Digital content distribution and consumption |
US12/045,472 | 2008-03-10 | ||
US12/101,065 US8959285B2 (en) | 2008-01-02 | 2008-04-10 | Storage system with local and remote storage devices which are managed by the local storage device |
US12/101,065 | 2008-04-10 | ||
US12/123,252 | 2008-05-19 | ||
US12/123,252 US9098506B2 (en) | 2008-01-02 | 2008-05-19 | Data indexing by local storage device |
US8209408P | 2008-07-18 | 2008-07-18 | |
US61/082,094 | 2008-07-18 | ||
US12/177,006 | 2008-07-21 | ||
US12/177,006 US8370402B2 (en) | 2008-01-02 | 2008-07-21 | Dual representation of stored digital content |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020107016705A Division KR20100107479A (ko) | 2008-01-02 | 2008-12-19 | 직접적인 사용자 액세스를 갖는 저장 장치 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20100106610A true KR20100106610A (ko) | 2010-10-01 |
Family
ID=40627639
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020107019371A KR20100106609A (ko) | 2008-01-02 | 2008-12-19 | 직접적인 사용자 액세스를 갖는 저장 장치 |
KR1020107019377A KR20100106610A (ko) | 2008-01-02 | 2008-12-19 | 직접적인 사용자 액세스를 갖는 저장 장치 |
KR1020107016705A KR20100107479A (ko) | 2008-01-02 | 2008-12-19 | 직접적인 사용자 액세스를 갖는 저장 장치 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020107019371A KR20100106609A (ko) | 2008-01-02 | 2008-12-19 | 직접적인 사용자 액세스를 갖는 저장 장치 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020107016705A KR20100107479A (ko) | 2008-01-02 | 2008-12-19 | 직접적인 사용자 액세스를 갖는 저장 장치 |
Country Status (6)
Country | Link |
---|---|
EP (3) | EP2249254A3 (ko) |
JP (1) | JP2011513804A (ko) |
KR (3) | KR20100106609A (ko) |
CN (3) | CN101960426A (ko) |
TW (1) | TW200937198A (ko) |
WO (1) | WO2009088709A2 (ko) |
Families Citing this family (48)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9020993B2 (en) | 2008-12-16 | 2015-04-28 | Sandisk Il Ltd. | Download management of discardable files |
US8849856B2 (en) | 2008-12-16 | 2014-09-30 | Sandisk Il Ltd. | Discardable files |
US9015209B2 (en) | 2008-12-16 | 2015-04-21 | Sandisk Il Ltd. | Download management of discardable files |
US9104686B2 (en) | 2008-12-16 | 2015-08-11 | Sandisk Technologies Inc. | System and method for host management of discardable objects |
US8375192B2 (en) | 2008-12-16 | 2013-02-12 | Sandisk Il Ltd. | Discardable files |
US8205060B2 (en) | 2008-12-16 | 2012-06-19 | Sandisk Il Ltd. | Discardable files |
CN106101206B (zh) * | 2009-08-21 | 2020-02-21 | 三星电子株式会社 | 提供内容的方法和系统 |
US8374480B2 (en) * | 2009-11-24 | 2013-02-12 | Aten International Co., Ltd. | Method and apparatus for video image data recording and playback |
TWI421686B (zh) * | 2010-04-12 | 2014-01-01 | Phison Electronics Corp | 資料存取方法與系統、儲存媒體控制器與儲存系統 |
JP5663950B2 (ja) * | 2010-05-19 | 2015-02-04 | 富士通株式会社 | 接続拡張装置及びストレージシステム |
US20110302224A1 (en) * | 2010-06-08 | 2011-12-08 | Rahav Yairi | Data storage device with preloaded content |
US8549229B2 (en) | 2010-08-19 | 2013-10-01 | Sandisk Il Ltd. | Systems and methods for managing an upload of files in a shared cache storage system |
US8463802B2 (en) | 2010-08-19 | 2013-06-11 | Sandisk Il Ltd. | Card-based management of discardable files |
KR101544480B1 (ko) | 2010-12-24 | 2015-08-13 | 주식회사 케이티 | 복수 개의 프락시 서버를 포함하는 분산 저장 시스템 및 그 오브젝트 관리 방법 및 컴퓨터에 의하여 독출가능한 저장 매체 |
US8788849B2 (en) * | 2011-02-28 | 2014-07-22 | Sandisk Technologies Inc. | Method and apparatus for protecting cached streams |
KR101544485B1 (ko) | 2011-04-25 | 2015-08-17 | 주식회사 케이티 | 클라우드 스토리지 시스템에서 복수개의 복제본을 분산 저장하는 방법 및 장치 |
US9862051B2 (en) * | 2011-09-27 | 2018-01-09 | Illinois Tool Works Inc. | Welding system and method utilizing cloud computing and data storage |
US10019574B2 (en) * | 2011-12-22 | 2018-07-10 | Intel Corporation | Systems and methods for providing dynamic file system awareness on storage devices |
EP2795505A4 (en) | 2011-12-22 | 2015-09-02 | Intel Corp | ACTIVATION AND MONETIZATION OF INTEGRATED FUNCTIONS IN STORAGE SUBSYSTEMS USING A RELIABLE CONNECTION SERVICE BACKPACK INFRASTRUCTURE |
US9529805B2 (en) * | 2011-12-22 | 2016-12-27 | Intel Corporation | Systems and methods for providing dynamic file system awareness on storage devices |
WO2013169759A2 (en) * | 2012-05-07 | 2013-11-14 | Citrix Systems, Inc. | Speech recognition support for remote applications and desktops |
US9298494B2 (en) | 2012-05-14 | 2016-03-29 | Qualcomm Incorporated | Collaborative learning for efficient behavioral analysis in networked mobile device |
US9202047B2 (en) | 2012-05-14 | 2015-12-01 | Qualcomm Incorporated | System, apparatus, and method for adaptive observation of mobile device behavior |
US9609456B2 (en) | 2012-05-14 | 2017-03-28 | Qualcomm Incorporated | Methods, devices, and systems for communicating behavioral analysis information |
US9324034B2 (en) | 2012-05-14 | 2016-04-26 | Qualcomm Incorporated | On-device real-time behavior analyzer |
US9690635B2 (en) | 2012-05-14 | 2017-06-27 | Qualcomm Incorporated | Communicating behavior information in a mobile computing device |
US9306879B2 (en) | 2012-06-08 | 2016-04-05 | Apple Inc. | Message-based identification of an electronic device |
US9747440B2 (en) | 2012-08-15 | 2017-08-29 | Qualcomm Incorporated | On-line behavioral analysis engine in mobile device with multiple analyzer model providers |
US9495537B2 (en) | 2012-08-15 | 2016-11-15 | Qualcomm Incorporated | Adaptive observation of behavioral features on a mobile device |
US9319897B2 (en) | 2012-08-15 | 2016-04-19 | Qualcomm Incorporated | Secure behavior analysis over trusted execution environment |
US9330257B2 (en) | 2012-08-15 | 2016-05-03 | Qualcomm Incorporated | Adaptive observation of behavioral features on a mobile device |
US9317212B2 (en) * | 2012-12-18 | 2016-04-19 | Intel Corporation | Method and apparatus for controlling a storage device |
US9686023B2 (en) | 2013-01-02 | 2017-06-20 | Qualcomm Incorporated | Methods and systems of dynamically generating and using device-specific and device-state-specific classifier models for the efficient classification of mobile device behaviors |
US10089582B2 (en) | 2013-01-02 | 2018-10-02 | Qualcomm Incorporated | Using normalized confidence values for classifying mobile device behaviors |
US9684870B2 (en) | 2013-01-02 | 2017-06-20 | Qualcomm Incorporated | Methods and systems of using boosted decision stumps and joint feature selection and culling algorithms for the efficient classification of mobile device behaviors |
US9742559B2 (en) | 2013-01-22 | 2017-08-22 | Qualcomm Incorporated | Inter-module authentication for securing application execution integrity within a computing device |
US9491187B2 (en) | 2013-02-15 | 2016-11-08 | Qualcomm Incorporated | APIs for obtaining device-specific behavior classifier models from the cloud |
TW201530344A (zh) * | 2014-01-21 | 2015-08-01 | hong-jian Zhou | 應用程式存取保護方法及應用程式存取保護裝置 |
US10078533B2 (en) * | 2014-03-14 | 2018-09-18 | Amazon Technologies, Inc. | Coordinated admission control for network-accessible block storage |
TWI609286B (zh) | 2014-10-08 | 2017-12-21 | 鴻海精密工業股份有限公司 | 文檔管理系統及方法 |
GB2553102B (en) * | 2016-08-19 | 2020-05-20 | Advanced Risc Mach Ltd | A memory unit and method of operation of a memory unit to handle operation requests |
JP6835949B2 (ja) * | 2017-02-28 | 2021-02-24 | 株式会社日立製作所 | 情報システム、管理プログラム及び情報システムのプログラム交換方法 |
CN110196818B (zh) * | 2018-02-27 | 2021-07-16 | 华为技术有限公司 | 缓存数据的方法、缓存设备和存储系统 |
TWI803687B (zh) * | 2018-08-23 | 2023-06-01 | 美商阿爾克斯股份有限公司 | 用於路由最佳化的系統及其方法 |
TWI710909B (zh) * | 2018-09-28 | 2020-11-21 | 普安科技股份有限公司 | 具多平台相容性模組之資料儲存子系統之儲存系統架構及其方法 |
CN112199304B (zh) * | 2019-07-08 | 2024-04-09 | 华为技术有限公司 | 数据预取方法及装置 |
KR102275764B1 (ko) * | 2019-08-22 | 2021-07-13 | 김덕우 | 가변 컴퓨터 파일시스템이 적용된 데이터 저장장치 |
FR3136079A1 (fr) * | 2022-05-25 | 2023-12-01 | STMicroelectronics (Alps) SAS | Méthode pour la gestion d’une zone de données sensible en mémoire FLASH |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
NL212905A (ko) | 1956-01-11 | |||
US5509134A (en) * | 1993-06-30 | 1996-04-16 | Intel Corporation | Method and apparatus for execution of operations in a flash memory array |
JPH11296418A (ja) * | 1998-04-09 | 1999-10-29 | Nec Corp | ファイルシステム |
US7685311B2 (en) * | 1999-05-03 | 2010-03-23 | Digital Envoy, Inc. | Geo-intelligent traffic reporter |
GB2400707B (en) * | 2000-05-25 | 2004-12-29 | Sealedmedia Ltd | Search engine and digital rights management |
JP4524480B2 (ja) * | 2000-11-24 | 2010-08-18 | 三洋電機株式会社 | データ端末装置 |
JP2003058487A (ja) * | 2001-08-13 | 2003-02-28 | Hitachi Ltd | データアクセス制御方式 |
US20060107330A1 (en) * | 2003-01-02 | 2006-05-18 | Yaacov Ben-Yaacov | Method and system for tracking and managing rights for digital music |
JP2005056077A (ja) * | 2003-08-01 | 2005-03-03 | Hitachi Ltd | データベース制御方法 |
US7363510B2 (en) * | 2004-05-26 | 2008-04-22 | Mount Sinai School Of Medicine Of New York University | System and method for presenting copy protected content to a user |
EP1759477A4 (en) * | 2004-06-22 | 2010-01-13 | Nds Ltd | SYSTEM FOR THE MANAGEMENT OF DIGITAL RIGHTS |
US7427027B2 (en) * | 2004-07-28 | 2008-09-23 | Sandisk Corporation | Optimized non-volatile storage systems |
CN101027929B (zh) * | 2004-09-23 | 2012-04-25 | 金雅拓股份有限公司 | 使用因特网协议与移动设备中的通用集成电路卡通信的系统和方法 |
US20060288166A1 (en) * | 2005-06-17 | 2006-12-21 | Wanderback Llc | System, method, and computer program product for nonvolatile memory devices |
US7627733B2 (en) * | 2005-08-03 | 2009-12-01 | Sandisk Corporation | Method and system for dual mode access for storage devices |
US7925973B2 (en) * | 2005-08-12 | 2011-04-12 | Brightcove, Inc. | Distribution of content |
JP2009508412A (ja) * | 2005-09-08 | 2009-02-26 | サンディスク コーポレーション | メディアコンテンツのセキュアストレージと配信のためのモバイルメモリシステム |
US20070043667A1 (en) * | 2005-09-08 | 2007-02-22 | Bahman Qawami | Method for secure storage and delivery of media content |
US20080263542A1 (en) * | 2005-10-12 | 2008-10-23 | Clevx, Llc | Software-Firmware Transfer System |
US20070156998A1 (en) * | 2005-12-21 | 2007-07-05 | Gorobets Sergey A | Methods for memory allocation in non-volatile memories with a directly mapped file storage system |
US8706799B2 (en) * | 2006-05-29 | 2014-04-22 | Sandisk Il Ltd. | Method and apparatus to exchange information with a local storage device |
-
2008
- 2008-12-19 CN CN2008801277207A patent/CN101960426A/zh active Pending
- 2008-12-19 KR KR1020107019371A patent/KR20100106609A/ko not_active Application Discontinuation
- 2008-12-19 KR KR1020107019377A patent/KR20100106610A/ko not_active Application Discontinuation
- 2008-12-19 CN CN201010506267XA patent/CN102012790A/zh active Pending
- 2008-12-19 WO PCT/US2008/087695 patent/WO2009088709A2/en active Application Filing
- 2008-12-19 CN CN2010105062951A patent/CN101976315A/zh active Pending
- 2008-12-19 KR KR1020107016705A patent/KR20100107479A/ko not_active Application Discontinuation
- 2008-12-19 JP JP2010541483A patent/JP2011513804A/ja active Pending
- 2008-12-19 EP EP10007974A patent/EP2249254A3/en not_active Withdrawn
- 2008-12-19 EP EP08870111A patent/EP2243083A2/en not_active Withdrawn
- 2008-12-19 EP EP10007973A patent/EP2249253A1/en not_active Withdrawn
- 2008-12-31 TW TW097151734A patent/TW200937198A/zh unknown
Also Published As
Publication number | Publication date |
---|---|
EP2249254A2 (en) | 2010-11-10 |
KR20100106609A (ko) | 2010-10-01 |
EP2249253A1 (en) | 2010-11-10 |
KR20100107479A (ko) | 2010-10-05 |
WO2009088709A2 (en) | 2009-07-16 |
WO2009088709A3 (en) | 2009-10-15 |
CN101976315A (zh) | 2011-02-16 |
CN101960426A (zh) | 2011-01-26 |
EP2249254A3 (en) | 2011-02-23 |
EP2243083A2 (en) | 2010-10-27 |
JP2011513804A (ja) | 2011-04-28 |
TW200937198A (en) | 2009-09-01 |
CN102012790A (zh) | 2011-04-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20100106610A (ko) | 직접적인 사용자 액세스를 갖는 저장 장치 | |
US8359654B2 (en) | Digital content distribution and consumption | |
US8583878B2 (en) | Storage device having direct user access | |
KR101626117B1 (ko) | 클라우드 스토리지를 제공하는 클라이언트, 중개 서버 및 방법 | |
US11138150B2 (en) | Network repository for metadata | |
KR100813982B1 (ko) | 모바일 단말기와 근거리 서버간의 콘텐츠 공유 방법 | |
KR101312125B1 (ko) | 콘텐츠 필터링 장치 및 방법 | |
CA2841140C (en) | Rights control method and apparatus for digital living network alliance | |
WO2009105147A1 (en) | Personal license server and methods for use thereof | |
WO2006003875A1 (ja) | プログラム実行機器およびそのプログラム実行方法 | |
US8234247B2 (en) | Content management system and method for portable device | |
TWI385966B (zh) | 多媒體系統、媒體中央控制器及其管理媒體檔案的方法 | |
KR100665436B1 (ko) | 홈네트워크를 통한 파일 서버 관리 방법 | |
JP2008301479A (ja) | 無線携帯マルチメディアプレーヤーおよびその方法 | |
JP2002259265A (ja) | コンテンツデータ配信システム及びコンテンツデータ配信用マルチメディア端末 | |
KR20060124252A (ko) | 인터넷을 통해 이동통신 단말기에 연결된 usb디바이스를 제어하는 방법 | |
JP2017054162A (ja) | 情報端末、情報処理システムおよびデータ読み込み方法、並びにコンピュータ・プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A107 | Divisional application of patent | ||
WITN | Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid |