상기와 같은 과제를 해결하기 위한 본 발명의 하나의 특징은, 데이터 기록/재생 방법에 있어서, 유효하지 않은 데이터가 일부에 패딩된 기록단위 블록을 기록하거나 독출하는 단계와, 상기 기록 단위 블록에 상기 유효하지 않은 데이터가 담겨있음을 알려주는 패딩 정보에 기초하여 상기 기록단위 블록에 포함된 유효한 데이터를 갱신하는 단계를 포함하는 것이다.
상기 갱신 단계는, 상기 패딩 정보로부터 상기 기록 단위 블록에서 상기 갱신하고자 하는 데이터를 제외한 데이터가 유효하지 않은 데이터임이 확인되면, 상기 기록 단위 블록의 데이터의 에러정정에 관계없이 상기 기록 단위 블록에 포함된 유효한 데이터를 갱신하는 것이 바람직하다.
또한, 상기 갱신 단계는, 상기 패딩 정보를 포함하는 데이터블록을 에러정정하는 단계와, 상기 에러정정된 패딩 정보로부터 상기 기록 단위 블록에서 상기 갱신하고자 하는 데이터를 제외한 데이터가 유효하지 않은 데이터임을 확인하는 단계와, 상기 기록 단위 블록의 데이터의 에러정정이 실패하더라도 상기 갱신된 데이터에 상기 유효하지 않은 데이터를 패딩하여 대체 기록 단위 블록을 생성하는 단계와, 상기 생성된 대체 기록 단위 블록을 디스크의 대체 위치에 기록하는 단계를 포함하는 것이 바람직하다.
또한, 상기 갱신 단계는, 상기 패딩 정보로부터 상기 기록 단위 블록에서 상기 갱신하고자 하는 데이터를 제외한 데이터중에 유효한 데이터와 유효하지 않은 데이터가 포함되어 있음이 확인되면, 상기 유효하지 않은 데이터의 에러정정에 관계없이 상기 기록 단위 블록에 포함된 갱신하고자 하는 데이터를 갱신하는 것이 바람직하다.
또한, 상기 갱신 단계는, 상기 패딩 정보를 포함하는 데이터블록을 에러정정하는 단계와, 상기 에러정정된 패딩 정보로부터 상기 기록 단위 블록에서 상기 갱신하고자 하는 데이터를 제외한 데이터에 유효한 데이터와 유효하지 않은 데이터가 포함되어 있음을 확인하는 단계와, 상기 유효하지 않은 데이터의 에러정정이 실패하더라도 상기 기록 단위 블록에서 갱신하고자 하는 데이터를 갱신하여 대체 기록 단위 블록을 생성하는 단계와, 상기 생성된 대체 기록 단위 블록을 디스크의 대체 위치에 기록하는 단계를 포함하는 것이 바람직하다.
본 발명의 다른 특징은, 데이터 기록/재생 방법에 있어서, 유효하지 않은 데이터가 일부에 패딩된 기록단위 블록을 기록하거나 독출하는 단계와, 상기 기록 단위 블록에 상기 유효하지 않은 데이터가 담겨있음을 알려주는 패딩 정보에 기초하여 상기 기록단위 블록에 새로운 데이터를 추가하는 단계를 포함하는 것이다.
상기 추가 단계는, 상기 패딩 정보로부터 상기 기록 단위 블록에서 상기 추가하고자 하는 데이터를 제외한 데이터가 유효하지 않은 데이터임이 확인되면, 상기 기록 단위 블록의 데이터의 에러정정에 관계없이 상기 기록 단위 블록에 상기 새로운 데이터를 추가하는 것이 바람직하다.
또한, 상기 추가 단계는, 상기 패딩 정보를 포함하는 데이터블록을 에러정정하는 단계와, 상기 에러정정된 패딩 정보로부터 상기 기록 단위 블록에서 상기 추가하고자 하는 위치를 제외한 위치에 유효하지 않은 데이터가 기록되어 있음을 확인하는 단계와, 상기 기록 단위 블록의 데이터의 에러정정이 실패하더라도 상기 새로운 데이터에 상기 유효하지 않은 데이터를 패딩하여 대체 기록 단위 블록을 생성하는 단계와, 상기 생성된 대체 기록 단위 블록을 디스크의 대체 위치에 기록하는 단계를 포함하는 것이 바람직하다.
또한, 상기 추가 단계는, 상기 패딩 정보로부터 상기 기록 단위 블록에서 상기 추가하고자 하는 위치를 제외한 위치에 유효한 데이터와 유효하지 않은 데이터가 기록되어 있음이 확인되면, 상기 유효하지 않은 데이터의 에러정정에 관계없이 상기 기록 단위 블록에 새로운 데이터를 추가하는 것이 바람직하다.
또한, 상기 추가 단계는, 상기 패딩 정보를 포함하는 데이터블록을 에러정정하는 단계와, 상기 에러정정된 패딩 정보로부터 상기 기록 단위 블록에서 상기 추가하고자 하는 위치를 제외한 위치에 유효한 데이터와 유효하지 않은 데이터가 기록되어 있음을 확인하는 단계와, 상기 유효하지 않은 데이터의 에러정정이 실패하더라도 상기 기록 단위 블록에 상기 새로운 데이터를 추가하여 대체 기록 단위 블록을 생성하는 단계와, 상기 생성된 대체 기록 단위 블록을 디스크의 대체 위치에 기록하는 단계를 포함하는 것이 바람직하다.
본 발명의 또 다른 특징은, 기록/재생 장치에 있어서, 유효하지 않은 데이터가 일부에 패딩된 기록단위 블록을 디스크에 기록하거나 디스크로부터 독출하는 기 록/독출부와, 상기 기록 단위 블록에 상기 유효하지 않은 데이터가 담겨있음을 알려주는 패딩 정보에 기초하여 상기 기록단위 블록에 포함된 유효한 데이터를 갱신하도록 상기 기록/독출부를 제어하는 제어부를 포함하는 것이다.
본 발명의 또 다른 특징은, 기록/재생 장치에 있어서, 유효하지 않은 데이터가 일부에 패딩된 기록단위 블록을 디스크에 기록하거나 디스크로부터 독출하는 기록/독출부와, 상기 기록 단위 블록에 상기 유효하지 않은 데이터가 담겨있음을 알려주는 패딩 정보에 기초하여 상기 기록단위 블록에 새로운 데이터를 추가하도록 상기 기록/독출부를 제어하는 제어부를 포함하는 것이다.
본 발명의 또 다른 특징은, 데이터 기록/재생 방법을 수행하는 프로그램이 기록된 컴퓨터 판독가능한 기록매체에 있어서, 상기 기록/재생 방법은, 유효하지 않은 데이터가 일부에 패딩된 기록단위 블록을 기록하거나 독출하는 단계와, 상기 기록 단위 블록에 상기 유효하지 않은 데이터가 담겨있음을 알려주는 패딩 정보에 기초하여 상기 기록단위 블록에 포함된 유효한 데이터를 갱신하는 단계를 포함하는 것이다.
본 발명의 또 다른 특징은, 데이터 기록/재생 방법을 수행하는 프로그램이 기록된 컴퓨터 판독가능한 기록매체에 있어서, 상기 기록/재생 방법은, 유효하지 않은 데이터가 일부에 패딩된 기록단위 블록을 기록하거나 독출하는 단계와, 상기 기록 단위 블록에 상기 유효하지 않은 데이터가 담겨있음을 알려주는 패딩 정보에 기초하여 상기 기록단위 블록에 새로운 데이터를 추가하는 단계를 포함하는 것이다.
이제, 첨부된 도면들을 참조하여 본 발명을 상세히 설명한다.
도 2는 본 발명에 따른 기록/재생 장치의 개략적인 블록도이다.
도 2를 참조하면, 본 실시예에 따른 장치는 기록 또는 재생이 가능한 장치로서, 기록/독출부(1) 및 제어부(2)를 포함한다. 기록/독출부(1)는 제어부(2)의 제어에 따라, 본 실시예에 따른 정보저장매체인 디스크(100)에 데이터를 기록하고, 기록된 데이터를 재생하기 위해 데이터를 독출한다. 제어부(2)는 본 발명에 따라 데이터를 소정 기록 단위 블록으로 기록하도록 기록/독출부(1)를 제어하거나 기록/독출부(1)에 의해 독출된 데이터를 처리하여 유효한 데이터를 얻어낸다. 재생은 읽어들인 데이터를 에러 정정하여 유효한 데이터를 얻어내는 것을 의미하며, 소정 단위로 수행된다. 재생이 수행되는 단위를 기록 단위 블록에 대응하여 재생 단위 블록이라고 한다. 재생 단위 블록은 적어도 하나의 기록 단위 블록에 대응한다.
기록시, 제어부(2)는 기록 단위 블록을 다 채울 수 없는 양의 데이터를 디스크(100)에 기록하는 경우, 일부에는 유효한 데이터가 담겨 있고, 나머지에는 유효하지 않은 데이터를 패딩하여 일정한 크기를 갖는 기록 단위 블록으로 만든 다음 이를 기록한다. 특히, 본 발명에 따라 제어부(2)는 유효하지 않은 데이터가 담겨 있음을 알려주는 패딩 정보를 디스크(100)에 기록한다. 본 발명에 따른 이러한 패딩 정보는 기록 단위 블록 내에 기록될 수도 있고 기록 단위 블록 외의 링킹 영역 등에 기록될 수도 있다. 패딩 정보는 유효하지 않은 데이터를 집어 넣는다는 의미에 국한되는 것이 아니라 유효한 정보와 유효하지 않은 정보를 구분할 수 있게 해 주는 정보를 포함한다. 상세한 설명은 후술한다.
재생시, 기록/독출부(1)는 디스크(100)로부터 일부에 유효한 데이터가 담겨 있고, 나머지에 유효하지 않은 데이터가 패딩된 적어도 하나의 기록 단위 블록을 읽어내고, 제어부(2)는 기록 단위 블록 내에 담겨 있는 패딩 정보를 기초로 유효한 데이터만을 추출하여 재생한다.
도 3은 도 2에 도시된 기록/재생 장치가 디스크 드라이브 시스템으로 구현된 세부적인 구성도이다.
도 3을 참조하면, 디스크 드라이브는 기록/독출부(1)로서 픽업(10)을 구비한다. 디스크(100)는 픽업(10)에 장착되어 있다. 또한, 디스크 드라이브는 제어부(2)로서 호스트 I/F(21), DSP(22), RF AMP(23), 서보(24), 시스템 제어기(25) 및 메모리(26)를 구비한다.
기록시, 호스트 I/F(21)는 호스트(도시되지 않음)로부터 기록할 데이터와 함께 기록 명령을 받는다. 시스템 제어기(25)는 기록에 필요한 초기화를 수행한다. DSP(22)는 호스트 I/F(21)로 받은 기록할 데이터를 에러 정정을 위해 패리티 등 부가 데이터를 첨가하고 ECC 인코딩을 수행하여, 에러 정정 블록인 ECC 블록을 생성한 다음 이를 미리 정해진 방식으로 변조한다. 여기서, ECC 블록의 크기에 미달되는 양의 데이터를 기록하고자 할 경우에는 유효하지 않은 데이터를 패딩하여 ECC 블록을 만든다. 패딩 정보는 먼저 첨가되고 난 다음 ECC 인코딩이 수행되거나 ECC 인코딩이 수행된 다음 첨가될 수 있다. RF AMP(23)는 DSP(22)로부터 출력된 데이터를 RF 신호로 바꾼다. 픽업(10)은 RF AMP(23)로부터 출력된 RF 신호를 디스크(100)에 기록한다. 서보(24)는 시스템 제어기(25)로부터 서보 제어에 필요한 명령을 입력받아 픽업(10)을 서보 제어한다.
특히, 본 발명에 따라 이와 같이 패딩 정보가 기록된 기록단위 블록에 포함된 데이터를 갱신하거나 추가하는 경우의 동작을 설명한다.
시스템 제어기(25)는 호스트로부터 기록 단위 블록에 포함된 데이터의 갱신 이나 추가 명령을 수신하면, 그 기록 단위 블록을 디스크(100)로부터 독출하여 메모리(26)에 저장한다. 그리고, 그 기록 단위 블록에 관한 패딩정보를 먼저 에러정정하여 그 기록단위 블록에 들어있는 유효한 데이터와 유효하지 않은 데이터를 확인한다. 기록 단위 블록에서 추가하거나 갱신하고자 하는 데이터의 위치 이외의 위치에는 유효하지 않은 데이터 즉, 패딩 데이터만 기록되어 있는 경우에는 그 기록 단위 블록에 들어있는 데이터의 에러정정이 실패하더라도 데이터의 추가 또는 갱신을 수행할 수 있다. 즉, 시스템 제어기(25)는 추가하거나 갱신하고자 하는 데이터 이외의 위치에는 패딩 데이터만 있는 경우에, 메모리(26)에 저장해놓은 기록단위 블록에서 추가 또는 갱신하고자 하는 위치에 데이터를 추가 또는 갱신하고, 나머지에는 패딩 데이터를 패딩하여 하나의 기록단위 블록을 만들고, 그 기록단위 블록을 디스크(100)에 기록한다. 상세한 설명은 후술한다.
재생시, 호스트 I/F(21)는 호스트(도시되지 않음)로부터 재생 명령을 받는다. 시스템 제어기(25)는 재생에 필요한 초기화를 수행한다. 픽업(10)은 디스크(100)에 레이저 빔을 조사하고 디스크(100)로부터 반사된 레이저 빔을 수광하여 얻어진 광 신호를 출력한다. RF AMP(23)는 픽업(10)으로부터 출력된 광 신호 를 RF 신호로 바꾸고 RF 신호로부터 얻어진 변조된 데이터를 DSP(22)로 제공하는 한편, RF 신호로부터 얻어진 제어를 위한 서보 신호를 서보(24)로 제공한다. DSP(22)는 변조된 데이터를 복조하고 ECC 에러 정정을 거쳐 얻어진 데이터를 출력한다. 일부에만 유효한 데이터가 기록된 ECC 블록의 경우 패딩 정보를 참조하여 유효한 데이터만을 재생한다.
한편, 서보(24)는 RF AMP(23)로부터 받은 서보 신호와 시스템 제어기(25)로부터 받은 서보 제어에 필요한 명령을 받아 픽업(10)에 대한 서보 제어를 수행한다. 호스트 I/F(21)는 DSP(22)로부터 받은 데이터를 호스트로 보낸다.
도 4a는 본 발명에 따라 패딩 정보가 삽입되는 기록 단위 블록을 나타내는 도면,
도 4a를 참조하면, 본 실시예에서 패딩 정보는 기록 단위 블럭 내에 기록되고, 하나의 기록 단위 블럭에 대응한다. 즉, 기록 단위 블럭마다 기록된다. 기록 단위 블럭은 기록을 수행함에 있어서 그 단위로서, 통상 일정한 크기를 가진다.
다른 실시예에서, 이와 같은 패딩 정보는 기록 단위 블럭 내에 기록되지만, 복수개의 기록 단위 블럭에 대응되도록 복수개의 기록 단위 블럭마다 기록될 수 있다.
도 4b는 본 발명에 따라 패딩 정보가 삽입되는 재생 단위 블록을 나타내는 도면,
도 4b를 참조하면, 본 실시예에서 패딩 정보는 하나의 재생 단위 블럭에 대응한다. 즉, 재생 단위 블럭마다 기록된다. 재생 단위 블럭은 적어도 하나의 기 록 단위 블럭에 대응한다. 따라서, 실제로 패딩 정보는 기록 단위 블럭 내에 기록되거나 기록 단위 블럭 외에 기록될 수 있다.
다른 실시예에서, 이와 같은 패딩 정보는 복수개의 재생 단위 블럭에 대응하도록 복수개의 재생 단위 블럭마다 기록될 수 있다.
도 5는 본 발명에 따른 패딩 정보의 세부적인 데이터 구조도이다.
도 5를 참조하면, 패딩 정보는 패딩 유무 정보, 패딩 위치 정보 및 패딩 값으로 구성된다. 패딩 유무 정보는 소정의 단위 블록, 예를 들어 기록 단위 블록내에 패딩된 데이터가 존재하는지 여부를 알려준다. 패딩 위치 정보는 기록 단위 블럭 내에서 유효한 데이터와 유효하지 않은 데이터가 존재하는 위치를 알려준다. 패딩 값은 패딩된 값이 무엇인지 알려준다. 미리, 패딩된 값이 무엇인지 약속한 경우라면 패딩된 값을 기록하지 않아도 무방하다.
이와 같은 패딩 정보를 통해 도 3에 도시된 디스크 드라이브는 기록 단위 블록에 포함된 데이터의 에러정정이 실패하더라도 유효한 데이터를 갱신하거나 추가할 수 있다. 기록 단위 블럭이 에러 정정 불가하더라도, 기록 단위 블록에서 갱신하거나 추가할 데이터 이외의 데이터가 유효하지 않은 데이터를 포함하는 코드워드이면, 그 기록단위 블록에 데이터를 추가하거나 갱신하여 이를 디스크에 기록할 수 있다. 기록단위 블록에서 유효하지 않은 정보에 해당하는 부분은 기록시 패딩된 값을 그대로 담아 디스크에 기록한다.
위와 같은 구성을 갖는 패딩 정보를 기초로, 도 3을 다시 참조하여, 디스크 드라이브의 동작을 보다 구체적으로 설명하면 다음과 같다.
일반적으로 디스크(100)의 리드 인 또는 리드 아웃에 기록되는 디스크 관리 정보의 양은 기록 단위 블럭의 크기(예: 64Kbytes)보다 작은데, 시스템 제어기(25)는 디스크(100)의 원활한 사용을 위해 그 나머지 모자라는 부분은 00h와 같은 일정한 값으로 패딩(padding)하여 일정한 크기의 기록 단위 블럭으로 만들어서 픽업(10)으로 전달한다. 또는, 호스트의 기록 명령에 의해 데이터를 기록함에 있어서, 시스템 제어기(25)는 호스트가 기록하고자 하는 데이터의 크기가 기록 단위 블럭(예: 64Kbytes)의 배수가 아닌 경우 호스트로부터 전송된 데이터를 받아 기록 단위 블럭의 크기에 맞추어 나누어서 기록되도록 하며, 기록 단위 블럭을 채우기에 모자라는 나머지 부분은 00h와 같은 일정한 값으로 패딩하여 일정한 크기의 기록 단위 블럭을 만들어서 픽업(10)으로 전해준다.
기록 단위 블럭의 일부가 00h와 같은 일정한 값으로 패딩된 경우, 시스템 제어기(25)는 기록 단위 블록의 내부 또는 외부에 패딩 정보를 함께 기록하여, 패딩된 유효하지 않은 데이터가 존재함을 표시하고, 유효한 데이터와 유효하지 않은 데이터가 기록 단위 블럭 내에서 존재하는 위치를 표시하며, 유효하지 않은 데이터의 값(즉, 패딩된 값, 00h로 패딩되었으면 00h, ffh로 패딩되었으면 ffh)을 기록한다.
도 6은 본 발명에 따라 패딩 정보를 삽입하여 인코딩된 데이터 구조의 일 예를 나타낸다. 도 6에 도시된 데이터 구조는 본 발명에 따른 패딩 정보가 "인터리빙 인코딩" 기술에서 개시된 바와 같은 데이터 구조에 적용된 경우의 일 예를 나타낸다. 그러나, 본 발명에 따른 "패딩 정보"가 적용될 수 있는 데이터 구조 및 시스템은, 기록 단위 블록에 들어가는 사용자 데이터와 패딩 정보가 별도로 ECC 인코 딩되고, 사용자 데이터가 에러정정 수행되기 전에 패딩 정보가 먼저 에러정정 수행되는 데이터 구조 및 시스템이면 충분하며, 도 6에 예시된 바와 같은 "인터리빙인코딩" 기술에 따른 시스템 및 구조는 설명의 편의를 위해 예시한 것으로, 그 일 예에 해당됨을 밝혀둔다.
도 6를 참조하면, ECC 클러스(44)를 형성하는 사용자 데이터(41)의 일부에 유효하지 않은 데이터 즉, 패딩 데이터가 패딩된다. 그리고, 이러한 패딩 데이터에 관한 정보인 패딩 정보가 BIS 클러스터(49)를 형성하는 물리 어드레스 데이터(46)의 일부에 삽입된다. 패딩 정보는 ECC 클러스터내에 들어있는 유효한 섹터들과 유효하지 않은 섹터들에 관한 정보를 말한다. 이와 같이 BIS 클러스터에 들어있는 섹터 단위의 패딩 정보를 이용하여 드라이브 시스템은 Read-Modify-Write 동작의 Read 과정 중 추가 또는 업데이트 하고자 하는 섹터를 제외한 나머지 섹터의 유효성을 파악함으로써, 비록 상기 ECC 클러스터의 LDC 클러스터가 에러 정정될 수 없다 하더라도 추가 또는 업데이트 하고자 하는 섹터를 대체 클러스터에 나머지 유효하지 않은 패딩 섹터들과 함께 기록을 수행할 수가 있다.
도 6에서는 본 발명에 따른 패딩 정보를 물리 어드레스 데이터(46)에 삽입된 것으로 도시하였지만, 이에 한정되는 것은 아니며 본 발명에 따른 패딩 정보는 논리 어드레스 + 제어 데이터(45)에 삽입될 수 있다.
도 7a 내지 도 7d는 도 6에 도시된 바와 같은 데이터 구조의 일 예에서 본 발명에 따라 기록 단위 블록의 데이터 갱신시 기록 단위 블록의 상태를 나타낸다.
도 7a를 참조하면, 디스크상의 사용자 데이터 영역에 물리주소 N을 가지는 클러스터에 기록되는 데이터의 논리적인 구조를 나타낸다. 32 섹터의 클러스터는 16 섹터로 이루어진 파일 A와 16 섹터의 패딩 데이터로 구성된다. 패딩 섹터 비트는 파일 A가 유효한 데이터임을 나타내기 위해 파일 A의 섹터들에 대해서는 "0"으로 표시되어 있고, 패딩 데이터가 유효하지 않은 데이터임을 나타내기 위해 패딩 데이터의 섹터들에 대해서는 "1"로 표시되어 있다. 물리적으로 이와 같은 패딩 섹터 비트들은 패딩 정보에 포함될 수 있다.
이와 같은 상태에서 호스트가 파일 A의 논리 주소에 해당하는 주소에 파일 A'을 업데이트하라고 명령하면 드라이브 시스템은 16 섹터의 파일 A의 논리 주소에 대응하는 물리주소를 찾고, 그 물리주소를 포함하고 있는 클러스터 즉, 물리주소 N을 가지는 클러스터를 Read-Modify-Write 오퍼레이션을 위해 디스크로부터 독출할 것이다. 이 때 드라이브 시스템은 내부 메모리에 클러스터 N을 저장하고, 먼저 BIS 클러스터를 에러 정정하고나서 LDC 클러스터를 에러 정정할 것이다.
도 7b는 이러한 과정에서 BIS 클러스터는 에러 정정되었으나 LDC 클러스터는 에러 정정 되지 않았음을 나타낸다. BIS 클러스터의 에러 정정으로부터 클러스터 N내에 있는 각각의 섹터에 대한 패딩 유무 즉, 데이터의 유효성 유무를 확인하여 클러스터 N의 하위 16 섹터가 패딩 데이터임을 알게 된다. 도 7b에서 섹터 부분에 표시된 음영은 LDC 클러스터에 대한 에러정정이 실패하였음을 나타낸다.
그러나, 이와 같이 LDC 클러스터에 대한 에러정정이 되지 않더라도 BIS 클러스터의 패딩 정보를 이용하여 업데이트 명령을 실행할 수 있다. 즉, 갱신 명령에 의해 업데이트하고자 하는 부분 이외의 부분이 패딩 데이터로서 유효하지 않은 데 이터임을 알 수 있으면, LDC 클러스터가 에러정정되지 않더라도 데이터 갱신 동작에는 문제가 없다. 다시말하면, 데이터가 갱신될 부분에 있는 데이터는 어차피 갱신될 것이므로, 에러정정되지 않아도 되고, 또한, 데이터가 갱신될 부분 이외의 데이터가 유효하지 않은 데이터라면, 이 부분 또한 에러정정될 필요가 없기 때문이다.
도 7c는 이와 같은 상황에서 이 클러스터에 결함이 있는 경우에 클러스터의 일부에 데이터를 갱신하고, 어드레스 M에 대체된 클러스터를 나타낸다. 클러스터에서 갱신하고자 하는 주소 즉, 파일 A가 기록된 상위 16섹터들의 위치에 파일 A'를 갱신하여 기록하고, 하위 16섹터에는 패딩 데이터를 패딩하여 구성한 대체 클러스터가 어드레스 M에 기록되어 있다. 패딩 섹터 비트는 파일 A'가 유효한 데이터임을 나타내기 위해 파일 A'의 섹터들에 대해서는 "0"으로 표시되어 있고, 패딩 데이터가 유효하지 않은 데이터임을 나타내기 위해 패딩 데이터의 섹터들에 대해서는 "1"로 표시되어 있다.
도 7d는 이 클러스터에 결함이 없는 경우의 데이터가 갱신된 클러스터를 나타낸다. 클러스터에 결함이 없는 경우에는 정상적인 Read-Modify-Write 오퍼레이션에 의해 클러스터에서 갱신하고자 하는 주소, 즉 파일 A가 기록된 상위 16섹터들의 위치에 파일 A'를 갱신하여 기록하고, 하위 16섹터에는 패딩 데이터를 패딩하여 이를 어드레스 N에 기록한다. 패딩 섹터 비트는 파일 A'가 유효한 데이터임을 나타내기 위해 파일 A'의 섹터들에 대해서는 "0"으로 표시되어 있고, 패딩 데이터가 유효하지 않은 데이터임을 나타내기 위해 패딩 데이터의 섹터들에 대해서는 "1"로 표시되어 있다.
도 8a 내지 도 8d는 도 6에 도시된 바와 같은 데이터 구조의 일 예에서 본 발명에 따라 기록 단위 블록의 데이터 추가시 기록 단위 블록의 상태를 나타낸다.
도 8a를 참조하면, 디스크상의 사용자 데이터 영역에 물리주소 N을 가지는 클러스터에 기록되는 데이터의 논리적인 구조를 나타낸다. 32 섹터의 클러스터는 8 섹터로 이루어진 파일 A와 24 섹터의 패딩 데이터로 구성된다. 패딩 섹터 비트는 파일 A가 유효한 데이터임을 나타내기 위해 파일 A의 섹터들에 대해서는 "0"으로 표시되어 있고, 패딩 데이터가 유효하지 않은 데이터임을 나타내기 위해 패딩 데이터의 섹터들에 대해서는 "1"로 표시되어 있다. 물리적으로 이와 같은 패딩 섹터 비트들은 패딩 정보에 포함될 수 있다.
이와 같은 상태에서 호스트가 어드레스 N의 클러스터의 하위 8섹터에 파일 B를 추가하라고 명령하면, 드라이브 시스템은 이러한 8섹터의 파일 B를 위한 논리 주소에 대응하는 물리 주소를 찾고, 그 물리주소를 포함하고 있는 클러스터 즉, 물리주소 N을 가지는 클러스터를 Read-Modify-Write 오퍼레이션을 위해 디스크로부터 독출할 것이다. 이 때 드라이브 시스템은 내부 메모리에 클러스터 N을 저장하고, 먼저 BIS 클러스터를 에러 정정하고나서 LDC 클러스터를 에러 정정할 것이다.
도 8b는 이러한 과정에서 BIS 클러스터는 에러 정정되고, LDC 클러스터의 에러 정정 수행과정에서 LDC 클러스터의 파일 A를 위한 8섹터는 에러정정되나 나머지 24섹터는 에러정정되지 않았음을 나타낸다. BIS 클러스터의 에러 정정으로부터 클러스터 N내에 있는 각각의 섹터에 대한 패딩 유무 즉, 데이터의 유효성 유무를 확 인한 결과, 클러스터 N의 상위 8섹터는 유효한 데이터이고, 하위 24 섹터가 유효하지 않은 데이터 즉, 패딩 데이터임을 알 수 있다. 도 7b에서 섹터 부분에 음영은 LDC 클러스터에 대한 에러정정은 실패하였음을 나타낸다.
그러나, 이와 같이 LDC 클러스터의 일부 데이터에 대해 에러정정이 되지 않더라도 BIS 클러스터의 패딩 정보를 이용하여 데이터 추가 명령을 실행할 수 있다. 즉, 추가 명령에 의해 데이터를 추가하고자 하는 부분에 유효하지 않은 데이터만 기록되어 있음을 알 수 있으면, LDC 클러스터의 일부 데이터가 에러정정되지 않더라도 데이터 추가 동작에는 문제가 없다. 다시말하면, 데이터가 추가될 부분에 있는 기록되어 데이터는 어차피 덮어써질 것이므로, 에러정정되지 않아도 되고, 또한, 데이터가 추가될 부분 이외의 부분에 있는 유효하지 않은 데이터는 마찬가지로 패딩 데이터로 패딩하면 될 것이기 때문에, 이 부분 또한 에러정정될 필요가 없기 때문이다.
도 8c는 이와 같은 상황에서 이 클러스터에 결함이 있는 경우에 클러스터의 일부에 데이터를 추가하고, 어드레스 M에 대체된 클러스터를 나타낸다. 대체 클러스터에서 상위 8 섹터에는 유효한 데이터 파일 A를 포함하고, 클러스터에서 추가하고자 하는 주소 즉, 패딩 데이터가 기록되어 있던 하위 8 섹터의 위치에 파일 B를 추가하여 기록하고, 그 이외의 섹터들에는 패딩 데이터가 패딩되어 있다. 패딩 섹터 비트는 파일 A와 파일 B가 유효한 데이터임을 나타내기 위해 파일 A와 파일 B의 섹터들에 대해서는 "0"으로 표시되어 있고, 패딩 데이터가 유효하지 않은 데이터임을 나타내기 위해 패딩 데이터의 섹터들에 대해서는 "1"로 표시되어 있다.
도 8d는 이 클러스터에 결함이 없는 경우의 데이터가 추가된 클러스터를 나타낸다. 클러스터에 결함이 없는 경우에는 정상적인 Read-Modify-Write 오퍼레이션에 의해 클러스터에서 추가하고자 하는 주소, 즉 하위 8섹터들의 위치에 파일 B를 추가하여 기록하고, 상위 8섹터에는 유효한 데이터를 그대로 삽입하고, 나머지 섹터에는 패딩 데이터를 패딩하여 이를 어드레스 N에 기록한다. 패딩 섹터 비트는 파일 A와 파일 B가 유효한 데이터임을 나타내기 위해 파일 A와 파일 B의 섹터들에 대해서는 "0"으로 표시되어 있고, 패딩 데이터가 유효하지 않은 데이터임을 나타내기 위해 패딩 데이터의 섹터들에 대해서는 "1"로 표시되어 있다.
도 9는 본 발명에 따른 기록 단위 블록의 데이터 갱신 방법의 과정을 나타내는 흐름도이다.
도 9를 참조하면, 드라이브 시스템은 호스트 또는 어플리케이션으로부터 데이터 갱신 명령을 수신한다(91). 호스트 또는 어플리케이션은 갱신하고자 하는 데이터의 논리 주소와 함께 데이터의 갱신 명령을 전송한다.
그러면, 드라이브 시스템의 시스템 제어기는 갱신하고자 하는 데이터의 논리 주소에 대응하는 물리 주소를 찾고, 디스크의 해당 물리 주소로부터 기록단위 블록을 독출하여 메모리에 저장한다(92). 이때 드라이브 시스템은 갱신할 데이터의 양이 하나의 기록 단위 블록이 안되는 경우에도 그 데이터를 포함하는 하나의 기록 단위 블록을 독출한다. 예를 들어, 하나의 기록 단위 블록이 32 섹터라고 하면, 갱신할 데이터의 양이 16섹터인 경우에도 드라이브 시스템은 갱신할 16 섹터의 데이터를 포함하는 32 섹터의 기록 단위 블록을 디스크로부터 독출한다.
다음, 시스템 제어기는 메모리에 저장해 놓은 기록 단위 블록의 BIS 클러스터를 에러정정하도록 제어한다(93).
BIS 클러스터의 에러정정이 완료되면 시스템 제어기는 기록 단위 블록의 LDC 클러스터를 에러정정하도록 제어한다(94).
다음, 시스템 제어기는 LDC 클러스터의 에러정정이 성공적으로 이루졌는지를 판단하고(95), 성공적으로 에러정정이 이루진 경우에는 일반적인 방법에 따라 그 기록단위 블록을 처리한다.
즉, 그 기록 단위 블록에 결함이 있는지를 판단한다(97). 실제로는 단계 94의 에러정정으로부터 그 기록 단위 블록을 결함으로 처리할 것인지에 대한 여부는 결정될 수 있다. 결함 여부 판단 결과, 결함이 없는 경우에는 메모리에 저장된 기록 단위 블록에서 갱신하려는 위치에 데이터를 갱신하고, 이 갱신된 데이터가 기록된 기록 단위 블록을 디스크에 기록한다(98). 이는 일반적인 Read-Modify-Write 과정이다.
결함 여부 판단 결과, 결함이 있는 경우에는 메모리에 저장된 기록 단위 블록에서 갱신하려는 위치에 데이터를 갱신하고, 이 갱신된 데이터가 기록된 대체 기록단위 블록을 디스크의 대체 위치에 기록한다(99).
단계 95에서 LDC 클러스터의 에러정정이 성공하지 않은 경우에는 BIS 클러스터의 에러정정 결과 BIS 클러스터내의 패딩 정보를 기초로 기록단위블록에서 갱신하려는 주소에 있는 데이터를 제외한 데이터가 패딩 데이터임을 확인한다(96). 즉, 본 발명의 일 예에 따라 기록 단위 블록이 전부 유효한 데이터로 채워지는 것 이 아니라 유효한 데이터는 일부만 채워지고 하나의 기록 단위 블록을 만들기 위해 나머지 데이터를 유효하지 않은 패딩 데이터로 채운 경우에 그 기록단위 블록에는 이러한 패딩 데이터에 관한 정보인 패딩 정보를 더 기록한다. 패딩 정보에는 예를 들어, 유효한 섹터를 나타내는 정보와 유효하지 않은 섹터를 나타내는 정보를 포함시킴으로써, 그 패딩 정보로부터 기록 단위 블록의 어느 위치에 유효한 데이터가 기록되어 있고 어느 위치에 유효하지 않은 데이터가 기록되어 있음을 알 수 있다. 그리고, 본 발명의 일 예에서는 이러한 패딩 정보를 BIS 클러스터내에 포함시킴으로써 BIS 클러스터가 에러정정되면, 시스템 제어기는 이러한 패딩 정보로부터 기록 단위 블록에 들어있는 유효한 데이터와 유효하지 않은 데이터의 위치를 확인할 수 있게 된다.
이러한 경우, 만약 기록단위 블록에서 갱신하려는 위치의 데이터를 제외한 데이터가 의미없는 패딩 데이터라는 것이 확인되면, 비록 LDC 클러스터의 에러정정이 실패되었더라도, 시스템 제어기는 이 기록 단위 블록에 데이터를 갱신할 수 있게 된다. 이는, 이 기록 단위 블록에서 갱신하려는 위치의 데이터는 어차피 갱신될 것이기 때문에 에러정정이 되지 않아도 상관없고, 또 갱신하려는 위치의 데이터 이외의 데이터가 무의미한 데이터라면 이 또한 에러정정될 필요가 없기 때문이다.
따라서, 이와 같은 경우에 시스템 제어기는 메모리에 저장된 기록단위 블록에서 갱신하려는 위치에 데이터를 갱신하고, 갱신하려는 위치 이외의 부분에는 패딩 데이터를 패딩하여 대체 기록단위 블록을 만든 다음, 이 대체 기록 단위 블록을 디스크의 대체 위치에 기록한다(99).
도 10은 본 발명에 따른 기록 단위 블록의 데이터 추가 방법의 과정을 나타내는 흐름도이다. 기록단위 블록의 데이터 추가 방법도 도 9를 참조하여 설명한 기록 단위 블록의 데이터 갱신 방법과 유사하게 이루어진다.
도 10를 참조하면, 드라이브 시스템은 호스트 또는 어플리케이션으로부터 데이터 추가 명령을 수신한다(101). 호스트 또는 어플리케이션은 갱신하고자 하는 데이터의 논리 주소와 함께 데이터의 추가 명령을 전송한다.
그러면, 드라이브 시스템의 시스템 제어기는 추가하고자 하는 데이터의 논리 주소에 대응하는 물리 주소를 찾고, 디스크의 해당 물리 주소로부터 기록단위 블록을 독출하여 메모리에 저장한다(102). 이때 드라이브 시스템은 추가할 데이터의 양이 하나의 기록 단위 블록이 안 되는 경우에도 그 데이터를 포함하는 하나의 기록 단위 블록을 독출한다. 예를 들어, 하나의 기록 단위 블록이 32 섹터라고 하면, 추가할 데이터의 양이 16섹터인 경우에도 드라이브 시스템은 추가할 16 섹터의 데이터를 포함하는 32 섹터의 기록 단위 블록을 디스크로부터 독출한다.
다음, 시스템 제어기는 메모리에 저장해 놓은 기록 단위 블록의 BIS 클러스터를 에러정정하도록 제어한다(103).
BIS 클러스터의 에러정정이 완료되면 시스템 제어기는 기록 단위 블록의 LDC 클러스터를 에러정정하도록 제어한다(104).
다음, 시스템 제어기는 LDC 클러스터의 에러정정이 성공적으로 이루졌는지를 판단하고(105), 성공적으로 에러정정이 이루진 경우에는 일반적인 방법에 따라 그 기록단위 블록을 처리한다.
즉, 그 기록 단위 블록에 결함이 있는지를 판단한다(107). 실제로는 단계 104의 에러정정으로부터 그 기록 단위 블록을 결함으로 처리할 것인지에 대한 여부는 결정될 수 있다. 결함 여부 판단 결과, 결함이 없는 경우에는 메모리에 저장된 기록 단위 블록에서 추가하려는 위치에 데이터를 갱신하고, 이 추가된 데이터가 기록된 기록 단위 블록을 디스크에 기록한다(108). 이는 일반적인 Read-Modify-Write 과정이다.
결함 여부 판단 결과, 결함이 있는 경우에는 메모리에 저장된 기록 단위 블록에서 추가하려는 위치에 데이터를 추가하고, 이 추가된 데이터가 기록된 대체 기록단위 블록을 디스크의 대체 위치에 기록한다(109).
단계 105에서 LDC 클러스터의 에러정정이 성공하지 않은 경우에는 BIS 클러스터의 에러정정 결과 BIS 클러스터내의 패딩 정보를 기초로 기록단위블록에서 추가하려는 주소에 있는 데이터를 제외한 데이터가 패딩 데이터임을 확인한다(106). 즉, 본 발명의 일 예에 따라 기록 단위 블록이 전부 유효한 데이터로 채워지는 것이 아니라, 유효한 데이터는 일부만 채워지고 하나의 기록 단위 블록을 만들기 위해 나머지 데이터를 유효하지 않은 패딩 데이터로 채운 경우에 그 기록단위 블록에는 이러한 패딩 데이터에 관한 정보인 패딩 정보를 더 기록한다. 패딩 정보에는 예를 들어, 유효한 섹터를 나타내는 정보와 유효하지 않은 섹터를 나타내는 정보를 포함시킴으로써, 그 패딩 정보로부터 기록 단위 블록의 어느 위치에 유효한 데이터가 기록되어 있고 어느 위치에 유효하지 않은 데이터가 기록되어 있음을 알 수 있다. 그리고, 본 발명의 일 예에서는 이러한 패딩 정보를 BIS 클러스터내에 포함시 킴으로써 BIS 클러스터가 에러정정되면, 시스템 제어기는 이러한 패딩 정보로부터 기록 단위 블록에 들어있는 유효한 데이터와 유효하지 않은 데이터의 위치를 확인할 수 있게 된다.
이러한 경우, 만약 기록단위 블록에서 추가하려는 위치의 데이터를 제외한 데이터중에서 유효한 데이터는 에러정정이 되었고, 나머지 데이터는 의미없는 패딩 데이터라는 것이 확인되면, 비록 LDC 클러스터의 에러정정이 부분적으로 실패되었더라도, 시스템 제어기는 이 기록 단위 블록에 데이터를 추가할 수 있게 된다. 이는, 이 기록 단위 블록에서 추가하려는 위치의 데이터는 어차피 갱신될 것이기 때문에 에러정정이 되지 않아도 상관없고, 또 추가하려는 위치의 데이터 이외의 데이터중에서 유효한 데이터는 에러정정이 수행되었으므로 문제가 없고, 또한 에러정정이 되지 않은 부분이 무의미한 데이터로만 되었는 경우에는 미 무의미한 데이터는 에러정정될 필요가 없기 때문이다.
따라서, 이와 같은 경우에 시스템 제어기는 메모리에 저장된 기록단위 블록에서 추가하려는 위치에 데이터를 추가하고, 유효한 데이터 및 패딩 데이터는 그대로 두어 대체 기록단위 블록을 만든 다음, 이 대체 기록 단위 블록을 디스크의 대체 위치에 기록한다(99).
도 11은 LDC 클러스터와 BIS 클러스터의 에러 정정 능력을 비교한 그래프이다.
도 11을 참조하면, 랜덤 에러(Random Error)에 의한 BIS 클러스터와 LDC 클러스터의 에러 정정 비교를 나타낸다. 랜덤 에러인 경우에 LDC 클러스터보다 BIS 클러스터의 에러 정정 능력이 훨씬 좋음을 알 수 있다. 도 11에 도시된 바와 같이 랜덤 에러(Random Error)에 대해 에러 정정의 차이가 나는 것은 LDC 클러스터 = (248, 216, 33) 코드이고 BIS 클러스터 = (62, 30, 33) 코드이기 때문이다. 이와 같이 그 패리티 바이트 수는 같지만, BIS 클러스터의 코드의 길이가 훨씬 짧기 때문에 에러 정정 능력의 차이가 도 11에 도시된 바와 같이 나타난다.
버스트 에러(Burst Error)에 대한 BIS 클러스터와 LDC 클러스터의 에러 정정의 차이는 다음과 같다. LDC 클러스터의 각각의 코드워드(codeword)는 그 패리티 바이트 수가 32이므로 그 인터리빙된 방식과 BIS 바이트를 이용한 이레이저(eraser) 정정으로 각각의 코드워드에서 최대 32 바이트를 정정함이 가능하다. 따라서 LDC 클러스터는 기록 단위 블록(Recording Unit Block)내에서 최대 64 기록 프레임(recording frame)까지 정정이 가능하다. 이에 반해 BIS 클러스터는 비록 각각의 코드워드에 대한 그 패리티 바이트 수는 LDC 코드워드와 동일하지만 이레이저(eraser) 정정을 하지 않아 각각의 BIS 코드워드내에서 최대 16개의 에러 바이트들을 정정할 수 밖에 없지만 24개의 BIS 코드워드로 구성되어 전체 BIS 클러스터에 골고루 인터리빙되어 있으므로 기록 단위 블록내에서 최대 128 기록 프레임까지 정정이 가능하다. 예를 들어, LDC 클러스터가 최대 길이 1cm에 해당하는 스크래치와 같이 아주 긴 에러에 대해 LDC 클러스터내에 발생된 에러들을 정정하는 것이 가능하다면, BIS 클러스터는 그것의 두 배인 최대 2cm에 해당하는 스크래치와 같이 아주 긴 에러에 대해 BIS 클러스터내에 발생된 에러들을 정정하는 것이 가능하다.
그러므로, 앞서 설명한 도 7b 및 도 8b에서와 같은 상황 즉, BIS 클러스터는 에러 정정 가능하고 LDC 클러스터는 에러 정정이 불가능한 경우는 빈번하게 발생하므로, 이러한 상황에서 본 발명과 같이 BIS 클러스터내에 각각의 섹터에 대한 패딩 정보를 두고, Read-Modify-Write중에서 Read하는 중 LDC 클러스터가 결함이더라도 상기의 패딩 정보를 데이터의 추가 또는 업데이트를 수행하면 드라이브 시스템의 불필요한 재시도 과정을 줄여 드라이브 시스템의 성능 향상을 꾀할 수 있다.
이상 설명한 바와 같은 기록/재생 방법은 또한 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 컴퓨터가 읽을 수 있는 기록매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광 데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현되는 것도 포함한다. 또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. 그리고, 상기 기록/재생 방법을 구현하기 위한 기능적인(function) 프로그램, 코드 및 코드 세그먼트들은 본 발명이 속하는 기술분야의 프로그래머들에 의해 용이하게 추론될 수 있다.
이제까지 본 발명에 대하여 그 바람직한 실시예들을 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.