인터넷에 상당히 자주 올라오는 질문이기도 하고 잘못된 정보가 상당히 널리 퍼져있는 질문이기도 하다.

SD는 마츠시타, 토시바, San Disk등이 휴대용 장비에서 사용하기 위해 개발한 메모리 카드 포맷이다.
일반적으로 10~20MB/s 정도의 전송속도를 가지고 추후 MiniSD, MicroSD(또는 Transflash라고도 불린다) 타입이 발표되었다.

각각의 크기는 위의 그림과 같다. SD는 최대 4G까지 지원하고 파일 시스템으로 FAT16 또는 FAT32를 사용할 수 있다.
SD 카드에는 3가지 전송모드(1-bit SD, 4-bit SD, SPI mode)가 있고 각 카드는 3가지 전송방식을 모두 지원한다. (단 MicroSD인 경우 SPI모드는 옵션이다.) 일반적인 경우 25MHz 클럭까지 지원해야 하고 High speed인 경우 50MHz 클럭을 지원해줘야 한다.

각각의 pinout은 다음과 같다.

먼저 SD카드의 pinout이다.

MiniSD카드의 pinout이다.

MicroSD카드의 pinout이다.

물리적인 pin 갯수는 달라도 비교해보면 실제 신호선은 동일하고 나머지는 사용하지 않는다.

SDHC(SD 2.0)는 SD의 용량 제한을 해결하기 위해 나온 표준이다. SD(SD 1.x)와 물리적, 전기적 form factor는 동일하다. 가장 큰 차이는 어드레싱 범위를 확장하기 위해 SD에서 사용하던 byte addressing 대신 sector addressing을 사용하는 것이다. 이를 통해 이론상 최대 2T까지 addressing이 가능하지만 현재 SDHC 스펙(SD 2.0)으로는 32GB가 최대고 새로 나올 리비젼 (SD 2.x)에서는 더 확장될 예정이다.
SDHC는 SD에 대해 backward compatibility를 가지고 있기 때문에 SDHC리더기에서 SD를 그대로 사용할 수 있다. 이전의 SD장비들은 SDHC의 sector addressing을 지원하지 않기 때문에 SDHC를 사용할 수 없다. 다만 일부 장비들은 SD 컨트롤러의 펌웨어 업그레이드를 통해 SDHC를 지원하도록 할 수 있는 경우도 있다.

SDHC는 일반적으로 FAT32로 포맷하지만 UFS2/ext2 또는 exFAT같은 파일 시스템도 사용할 수 있다.

또하나의 표준은 SDIO(Secure Digital I/O)이다. 이 역시 물리적 form factor는 SD와 동일하다. SD는 메모리를 위한 표준인데 비해 SDIO는 그 이외 다른 주변기기들을 연결하는데 사용한다.

아주 널리 사용되지는 않지만 무선랜카드, 블루투스, GPS수신기, 카메라, 바코드리더 등등 다양한 종류의 제품이 나와 있고 몇년 전에 주로 PDA에서 많이 사용되었었다.

SDIO와 SD의 가장 큰 차이는 SPI모드에 IRQ(인터럽트) 신호가 추가된 것이다. 그렇기 때문에 SDIO 카드는 SD슬롯이 SDIO도 지원하는 장비가 아니면 사용할 수가 없다.

--
인 터넷에 가장 널리 퍼져있는 잘못된 정보로는 'SD에 비해 SDHC는 핀이 하나 추가되기 때문에 SD에서 SDHC를 사용할 수 없다.'는 것이다. 위에도 써 놓은것처럼 SD와 SDHC의 물리적, 전기적 form factor는 동일하다. 차이는 SD컨트롤러가 SDHC에 추가된 sector addressing을 할 수 있는가 여부이기 때문에 일부 장비의 경우는 펌웨어 업그레이드를 통해 SDHC를 지원하게 만들어 줄 수 있는 경우도 있다. 아마 저 헛소문의 근원은 SDHC와 SDIO를 잘못 알고 있는게 아닌가 싶다. (SDIO는 IRQ 신호가 추가된다.)

그리고 파일시스템도 SD의 경우 일반적으로 FAT16을 사용하고 SDHC는 일반적으로 FAT32를 사용하 는것 뿐 꼭 그렇게 해야 한다는 법은 없다. SD나 SDHC 모두 FAT16, FAT32 뿐 아니고 UFS2/ext2 또는 exFAT같은 파일시스템을 사용할 수 있다. (다만 SDHC는 용량문제때문에 FAT16을 사용하는 경우 전체 용량을 다 사용할 수 없게 되기 때문에 FAT16을 사용하는 경우는 거의 없다.)

* 심지어 인터넷 기자라는 사람의 기사에 "SD카드와 SDHC카드의 가장 큰 차이점은 파일시스템이다. SD카드는 구식인 FAT16 파일시스템을 사용하고, SDHC카드는 신식인 FAT32 파일 시스템을 사용한다."까지 이런 소리를 써 놓고 있다. 잘 모르는 사람들이야 그렇다고 쳐도 기술담당 기자라면 자기가 쓰는 기사 내용에 대해서 최소한의 공부는 해서 잘못된 정보를 퍼트리지는 말아야 하는데 이건 오히려 앞장서서 혼란을 일으키고 있으니.... -_-;;;

* 마이크로SD를 아뒤노에 연결시키기 (MicroSD interface for Arduino)

--
추가된 부분 - SD카드 최대용량에 관한 내용

원래 SD1.0에서는 128bit의 CSD(Card Specific Data) register를 가지고 있는데 이 중 12비트(C_SIZE[73:62])가 메모리 클러스터 갯수(1~4096)를 나타내고 3비트(C_SIZE_MULT[49:47])가 클러스터 내의 블럭 갯수(000부터 111까지가 각각 4,8,16,32,64,128,256,512을 나타냄)를 나타낸다. 표준 블럭 크기는 512바이트라 초기 SD에서는 최대 4096*512*512 = 1GB까지 가능하다.
그 후 4비트(READ_BL_LEN[83:80], WRITE_BL_LEN[25:22])를 통해 블럭사이즈를 1024, 2048 바이트로 할 수 있게 되어 2G, 4G (4096*512*1024, 4096*512*2048)도 가능하게 되었다. (원래는 이 값이 일반적으로 512로 고정되어 있었음)

다만 오래된 장비들은 이 부분이 스펙에 추가되었어도 2G, 4G를 인식하지 못하는 경우도 있다. SD Association의 스펙에 보면 다음의 문구가 들어있다.
"2G짜리 카드를 만들기 위해서는 Maximum Block Length(READ_BL_LEN, WRITE_BL_LEN)을 1024로 만들어 줘야 한다. 하지만 CMD16에 의해 설정되는 Block Length는 최대 512 byte Block length를 가진 카드와 일관성을 유지하기 위해 최대 512까지만 사용할 수 있다."
Posted by nautes

댓글을 달아 주세요

  1. 2009.06.24 10:58

    요즘 SDIO 공부하려고 자료 찾고 있는데, 기본적이고 상식적인 내용이 정말 정리가 잘 되어 있네요.
    잘 보고 갑니다. 건승하세요~

  2. 2010.02.06 20:08

    좋은 자료네요.
    덕분에 공부하고 갑니다.

    감사합니다^^

  3. 2010.04.04 17:39

    정말 감사합니다. 핀아웃때문에.. 섣불리 테스트도 못하고 있었는데..
    정말 감사합니다.

친구의 부탁으로 넷북을 구입하여 포맷을 한 다음 윈도우 XP를 클린인스톨을 하게 되었다.


처음에 SSD를 포맷을 할 때 별 생각없이 파일 시스템을 NTFS로 선택하였다. 설치에 별다른 문제는 없었지만 설치하는데 엄청난 시간이 걸렸고 특히 sp2를 설치했기 때문에 sp3로 업데이트 할 때 역시 거의 1시간 이상 걸렸다.

어플리케이션 역시 일단 실행이 되면 동작속도는 괜찮았지만 윈도우의 반응속도나 초기 로딩속도가 엄청나게 오래 걸렸다. 물론 인텔 아톰 프로세서가 고성능은 아니어도 램도 2G, SSD 32G로 확장된 시스템이 무슨 셀러론 500MHz 프로세서에 램 512M 보다 눈에 띄게 느리게 움직이는 것이었다.

구글신의 도움을 받아 원인을 찾아 본 결과 범인(?)은 NTFS 파일시스템이었다.

아래 표가 FAT과 NTFS 파일시스템을 비교해 놓은 것이다.

위의 표에서 볼 수 있는것처럼 대용량의 하드를 사용하는 멀티유저 시스템인 경우 security, recoverability, fault tolerance가 중요하기 때문에 NTFS가 훨씬 유용하지만 주로 개인용 서브로 사용하고 사용되는 SSD도 32G이하인 경우가 많은 넷북에서는 NTFS를 사용하는게 별다른 이득이 없다.

또한 NTFS 파티션의 경우 모든 파일과 폴더에 대해 last access timestamp를 저장하고 있다. 이 timestamp는 파일이나 폴더가 억세스 (쓰기 뿐 아니고 읽기도 포함)될 때 마다 업데이트 된다. 즉 폴더를 브라우징 하거나 파일 내용을 보기만 해도 계속 timestamp가 업데이트 되어야만 한다. 특히 대량의 파일을 가지고 있는 폴더를 브라우징하면  log file이 쌓여서 OS가 이 로그를 하드디스크에 다 기록할 때 까지 윈도우가 느려지거나 반응이 없어질 수 있다.

고속 하드에서라면 큰 문제가 되지 않지만 넷북에 주로 사용되는 저속의 MLC SSD에서는 이게 엄청난 문제를 일으킬 수 있다.

특히 MLC SSD의 경우 한번에 writing하는 블럭 크기가 작으면 아래 그래프에서 볼 수 있는것처럼 기록속도가 매우 느려진다. Timestamp 로그는 사이즈가 작아서 가장 writing 속도가 느리다. 폴더를 한번만 열어봐도 그 폴더 안에 들어있는 모든 파일에 대해 가장 느린 operation을 해 줘야 하니 윈도우의 동작 속도가 엄청나게 느려지게 된다.

물론 FAT32에도 timestamp를 관리하지만 파일을 만들거나 내용을 수정하는 경우만 timestamp를 업데이트하고 읽기만 하는 경우는 timestamp를 업데이트 하지 않기 때문에 MLC 타입의 SSD를 사용하는 넷북의 경우 FAT32를 사용하는게 NTFS보다 훨씬 빠르게 동작한다.

넷북의 SSD를 FAT32로 포맷하고 윈도우를 다시 설치한 결과 NTFS를 설치한 경우보다 체감상으로 배 이상 빠르게 동작하는걸 확인할 수 있었다.

* NTFS를 사용하는 경우에도 last access timestamp 기능을 꺼 줄 수 있다. 이 경우는 테스트 해 보지 않았지만 이 기능을 꺼 주면 FAT32와 비슷한 속도로 동작할 수 있을것으로 생각된다. 이 기능을 꺼 주려면 레지스트리를 다음과 같이 수정해주면 된다.

Hive: HKEY_LOCAL_MACHINE

Key: SYSTEM\CurrentControlSet\Control\FileSystem

Name: NtfsDisableLastAccessUpdate

Type: REG_DWORD

Value: 1

Posted by nautes

댓글을 달아 주세요

  1. 2009.04.09 09:49 신고

    흥미로운 사실이네요 잘 보고 갑니다 ^^

Mac OS X에서는 FAT, FAT32 파티션은 읽기/쓰기가 모두 가능하지만 NTFS 파티션은 마운트를 해도 읽기 전용(read-only)으로밖에 사용할 수 없다.

예전에는 FAT32를 사용해도 큰 불편이 없었지만 최근들어 HD해상도 동영상 파일등은 파일크기가 4G를 넘어가는 경우가 많아 외장하드나 Bootcamp파티션에 FAT32를 사용하면 상당히 곤란한 경우가 발생하기 쉽다.

현재 가능한 솔루션으로는 Paragon 에서 나온 NTFS for Mac OS X와 Mac FUSE가 있다.

Paragon의 솔루션은 무료가 아니므로 여기서는 오픈소스인 Mac FUSE를 사용하는 방법을 설명하겠다.


macfuse.jpg

MacFUSE의 홈페이지에 가면 다음의 화면을 볼 수 있다. 화면 오른쪽에서 최신의 MacFUSE를 다운받는다.


macfuse1-1.jpg

다운받은 DMG파일을 더블클릭으로 오픈하면 아래와 같은 MacFUSE이미지가 마운트된다. 여기서 MacFUSE.pkg를 더블클릭해서 MacFUSE를 설치해준다.


MacFUSE3-1.jpg

MacFUSE 자체는 NTFS를 지원하는게 아니고 Mac OS X에서 다른 파일시스템을 사용할 수 있게 해 주는 일종의 프레임웍이기 때문에 NTFS 파일시스템을 사용하기 위해 MacFUSE를 설치한 다음에 NTFS-3G를 설치해 줘야 한다.


NTFS3g1.jpg

http://macntfs-3g.blogspot.com/ 로 가서 최신 버젼의 NTFS-3G를 다운받는다. 두가지 버젼이 있는데 위에것(ublio)은 내부 메모리 캐슁을 사용해서 고속으로 동작하지만 대신 시스템이 크래쉬되는 경우 최근의 작업내용을 잃어버리거나 파일시스템이 손상을 받을 가능성이 커진다.

아래쪽의 버젼(stable)은 성능은 약간 떨어져도 시스템 크래쉬같은 경우에도 파일시스템의 손상을 최소화하도록 되어 있다.

NTFS3g2.jpg

다운받은 DMG 파일을 더블클릭해서 열어주면 NTFS-3G 이미지가 마운트된다. 여기서도 NTFS-3G.pkg를 더블클릭해서 설치해준다. 설치가 끝나면 재시동을 하게 된다.

ntfs3g4.jpg

재시동을 한 다음 윈도우 파티션 디스크의 정보를 보면 Format이 NTFS-3g (MacFUSE)로, Sharing & Permission이 You have custom access로 바뀐걸 확인할 수 있다. 이제 NTFS 파티션도 일단 맥 디스크와 동일하게 읽고 쓰기가 모두 가능하다.

Posted by nautes

댓글을 달아 주세요

  1. 2009.02.16 02:59

    링크로 들어 왔습니다.... 항상 감사드립니다. =^^=

  2. 2009.04.09 01:55

    좋은 정보 감사합니다!! ^^

  3. 2009.05.16 21:33

    NTFS for Mac® OS X 7.0

    이 프로그램이 더 편리하지 않을까요?

    http://shimto.tistory.com/1185

    • 2009.05.17 05:32 신고

      Paragon 제품은 유료죠. 그리고 예전 버전에서는 MacFuse와 NTFS-3G를 별도로 설치해 줬어야 하는데 최근 버전은 한번에 다 설치되기 때문에 편의성에서도 별 차이가 없기 때문에 굳이 paragon제품을 쓸 필요성을 별로 못 느낍니다.

  4. 2009.10.18 14:55

    올려주신 글 잘 보았습니다.

    다만 좀 궁금한것이...네이버와 여기저기를 통해서 macfuse와 ntfs3g를 설치하였는데여
    윈도우 파티션이 어디갔는지 도통 찾을 수가 없네여 다만 에러메시지가 하나 뜨는데
    맥킨토시 유저라고 하기에는 완죤 초보라 질문도 이리 올리는게 맞는건지 모르겠네여...

    도움좀 부탁드리겠습니다...ㅡㅡ;

이전버튼 1 이전버튼