1 / 37

윈도우즈 기반 플래시 디스크의 성능 분석을 위한 도구 개발

윈도우즈 기반 플래시 디스크의 성능 분석을 위한 도구 개발. 시 기 : 2005/04/22 발표자 : 박 성 환. 목 차. 서론 윈도우즈 기반 플래시 메모리의 등장과 성능 분석의 필요성 관련 연구 FTL 알고리즘 윈도우즈의 I/O 윈도우즈 드라이버의 작성 실험 디스크 I/O 를 얻기 위한 드라이버 작성 및 부착 FTL APAT(FTL Algorithm Performance Analysis Tool) 실험 구조 실험 조건 실험 결과 Diskiomo 드라이버의 부착모습

Télécharger la présentation

윈도우즈 기반 플래시 디스크의 성능 분석을 위한 도구 개발

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 윈도우즈 기반 플래시 디스크의 성능 분석을 위한 도구 개발 시 기 : 2005/04/22 발표자 : 박 성 환

  2. 목 차 • 서론 • 윈도우즈 기반 플래시 메모리의 등장과 성능 분석의 필요성 • 관련 연구 • FTL 알고리즘 • 윈도우즈의 I/O • 윈도우즈 드라이버의 작성 • 실험 • 디스크 I/O를 얻기 위한 드라이버 작성 및 부착 • FTL APAT(FTL Algorithm Performance Analysis Tool) • 실험 구조 • 실험 조건 • 실험 결과 • Diskiomo 드라이버의 부착모습 • 실험 프로그램의 동작 모습 • 결론 • 참고 문헌

  3. 서 론

  4. 플래시 메모리의 등장 배경 • 최근 플래시 메모리를 장착한 기기들이 많이 등장함 MP3 플레이어 핸드폰 디지털 카메라

  5. 플래시 메모리의 장단점 • 이동성에 맞는 플래시 메모리의 장점들 • 소형화 • 대용량화 • 저전력화 • 비휘발성 • 고속화 • 충격에 강함 • 플래시 메모리의 단점(극복 사항) • 쓰기 전 소거 • 한 블록이 10만 번 이상 발생하게 되면 오류를 발생할 가능성이 높아짐

  6. 플래시 메모리란? • 플래시 메모리는 EEPROM의 한 종류 • 분류 • NAND 형 • 고집적이 가능하여 데이터를 저장하는 데 주로 사용 • 페이지 단위의 I/O만을 지원 • NOR 형 • 처리 속도가 빨라 프로그램 코드를 저장하는데 주로 사용 • 바이트 단위의 I/O를 지원 표 1

  7. 디스크에서 플래시 메모리로 • 기대 성능 • 휴대할 수 있을 정도의 크기와 무게를 제공함 • 휴대 시 발생하는 잦은 충격에 정보 보호력이 뛰어 남 • 현재 디스크를 플래시 메모리로 향후 대체 시 주의사항 • 플래시 메모리 는 쓰기 전 소거해야 하는 특징이 있음

  8. FTL 알고리즘의 필요성 • 디스크와는 다른 플래시 메모리만의 단점을 보안하기 위함 • 플래시 메모리의 삭제 횟수의 최소화 • 플래시 메모리는 한 블록당 10만 번 정도의 삭제연산이 발생하면 오류를 발생하기 때문 • 삭제블록 평준화(Wear-Leveling)을 조절 • 특정 블록이 못쓰게 되면 플래시 메모리 전체를 못쓰게 되기 때문 • FTL 알고리즘에서의 연산 속도의 최소화 • 평준화된 속도를 제공해야 함

  9. 윈도우즈 선택 이유 • 거의 모든 개인 컴퓨터에는 윈도우즈가 주류를 이루고 있음 • 때문에 플래시 메모리를 적용한 기기들은 대부분 윈도우즈 를 지원함 • FTL 알고리즘 작성시 윈도우즈의 디스크 I/O 패턴으로 시뮬레이션 하는 것이 좋음

  10. 관련 연구

  11. 플래시 시스템 File System LSN FTL Control RAM Table PBN Flash Memory FTL Algorithm LSN PBN

  12. FTL 알고리즘 • 논리적 수준과 물리적 수준의 맵핑 • 플래시 메모리와 파일 시스템 사이에 위치 • 파일 시스템이 플래시 메모리를 하드 디스크처럼 사용할 수 있게 해줌 • FTL을 사용하게 되면 기존의 파일 시스템 을 사용할 수 있다는 장점이 있음 • 블록의 효율적 사용 • 전체적인 블록을 효율적으로 사용해 읽기,쓰기와 삭제 연산을 줄이는 역할을 함 • 블록 삭제 연산의 평준화 및 최소화 • 전체 블록은 균등한 삭제 횟수를 가져야만 함 • 플래시 메모리는 한 블록당 10만 번 정도의 삭제연산이 발생하면 오류를 발생하기 때문

  13. FTL 맵핑 알고리즘 • 페이지단위 주소변환(page-level address mapping) 은 정교하게 주소를 변환하기 때문에 성능은 좋은데 반하여 주소변환 테이블의 크기가 커 제작비용이 높다. • 블록단위(block-level address mapping) 주소변환은 비 정교하게 주소를 변환하기 때문에 주소변환 테이블의 크기는 작지만, 내부의 하나의 페이지에 대한 수정연산이 발생해도 전체 블록을 삭제하고 갱신해야 하는 추가비용이 있다. 뿐만 아니라 이 과정을 수행하는 도중에 폴트가 발생하면 데이터의 일관성을 깨뜨릴 수 있다. • 혼합단위(Hybrid address mapping) 주소 변환은 페이지단위 주소변환과 블록 단위 주소변환을 같이 사용하는 것을 말한다. FTL Algorithm LSN PBN

  14. RAM(Random Access Memory) 테이블 • RAM의크기는 전체 시스템의 비용에 중요요소, RAM의 크기가 작아 질수록 시스템의 비용이 작아지며, FTL 알고리즘은 자신의 RAM 구조를 가지고 있고 RAM 구조에 따라 FTL 알고리즘을 나눌 수 있음 • 논리-물리 멥핑 정보(Logical to physical mapping information): RAM의 주요한 사용은 물리 맵핑 정보를 논리적으로 저장하는 것이다. RAM 정보에 접근함으로써 자료를 읽거나 쓰는 물리 플래시 메모리의 위치는 효과적으로 찾을 수 있음 • 여유 메모리 공간 정보(Free memory space information):단지 플래시 메모리에 있는 빈 메모리 공간을 RAM에 저장함으로써 FTL 알고리즘은 그 이상의 플래시 메모리 접근 없이 메모리 공간을 관리할 수 있음 • 삭제블록 평준화 정보(Information for wear-leveling):수준을 지닌 정보는 RAM에 저장 될 수 있음. 예를 들어 플래시 메모리 블록의 삭제횟수는 RAM에 저장 될 것임

  15. 섹터 맵핑(Sector Mapping) • 모든 논리 섹터(logical sector)는 대응하는 물리 섹터(physical sector)와 대응(mapping) • 기본 동작 • 빈 물리 섹터를 찾고, 거기에 자료를 기록 한 후, 멥핑 테이블(mapping table)에 적용 • 만약 빈 섹터가 없다면, 플래시 메모리에서 희생할(victim) 블록을 찾아, 스페어 빈 블록(spare free block)에 유효한 자료를 복사한 후 멥핑 테이블을 갱신(update). • 마지막에는 희생할 블록을 삭제하고, 그 블록은 스페어 블록(spare block)이 될 것임

  16. 블록 맵핑(Block Mapping) • 논리 블록(logical block) 내에 있는 논리 섹터 오프셋(logical sector offset)이 물리 블록 내에 있는 물리 섹터 오프셋(physical sector offset)과 동일 • 작은 크기의 멥핑 정보(mapping information)을 요구함. 그러나 만약 파일 시스템이 여러 번 같은 논리 섹터 번호(LSN:Logical Sector Number)에 기록를 요구하면 빈번히 복사와 삭제 연산을 수행하여 심각한 실행 하락을 야기 시킴 • 멥핑 테이블을 재구성하는 경우, 물리 블록 첫 번째 페이지(page)의 스페어 영역(spare area)에 논리 블록 번호(LBN:Logical Block Number)을 기록함

  17. 혼합 맵핑(Hybrid Mapping) • 물리 블록을 얻기 위해 블록 멥핑기술을 이용함. 그 다음 물리 블록 내에 있는 빈 섹터를 찾기 위해 섹터 멥핑기술을 이용 • 멥핑 테이블을 재구성 하는 경우에는 이 정보뿐만이 아니라 논리 블록 번호 또한 물리 블록의 스페어 영역에 기록 되어야만 함 • 플래시 메모리에서 자료를 읽을 때, 주어진 논리 섹터 번호를 이용하여 멥핑 테이블에서 물리 블록 번호를 찾음. 그런 다음 물리 블록의 스페어 영역에서 논리 섹터 번호를 읽어 원하는 자료의 가장 최근 값을 얻을 수 있음

  18. Disk 윈도우즈 의 I/O Application User Mode Kernel Mode I/O Manager IRP Communication File System (NTFS , FAT32 , FAT 등) IRP Communication Disk Driver IRP Communication

  19. 윈도우즈 의 I/O (cont) • 사용자 프로그램 에서 read 혹은 write의 시스템 호출을 통해 커널의 I/O 관리자에게 디스크 I/O를 요청하게 됨 • 커널 내에 있는 I/O 관리자가 요청을 받아들여 IRP(I/O Request Packet)로 파일 시스템 드라이버 에게 요청하게 됨 • 파일 시스템 드라이버는 논리 수준에서의 섹터 번호, 길이, 자료지시자를 연산해 디스크 드라이버에게 IRP를 전달함 • 디스크 드라이버는 IRP를 받아 물리 수준에서의 섹터 번호, 길이, 자료지시자로 IRP를 만들어 실제로 어떤 장치(Device)에게 전달되어야 하는 IRP인지를 보고 해당 물리 디스크에게 전송

  20. Disk IRP 통신 IRP Header Itatus I/O Manager 참조 Stack Locations File System 참조 Disk Driver 참조

  21. IRP 통신 • IRP (I/O Request Packet) • I/O 요청을 하기 위한 객체간에 통신 수단으로서 패킷(Packet)의 특징인 머리부(Header)와 꼬리부(Stack Location)가 존재 • 머리부 • 현재 IRP의 상태 정보 저장 • I/O 할 Buffer의 지시자를 가지고 있음 • 꼬리부 • 해당 객체가 수행해야 할 주함수(Major Function), 부함수(Minor Function), 인자(Parameter)가 있음 • IRP가 객체들에게 전달이 되면서 각 객체들은 IRP를 보고 해야 할 일들을 수행

  22. 윈도우즈 드라이버 작성법 • DDK (Device Development Kit)를 이용하여 드라이버를 작성 • NTDDK.h 안에 모든 기술이 되어있음 • 자료형(Data Type), 구조체(Structure), 상수(Constant Value), 메크로(Macro) 등등 • 윈도우즈 는 범세계적인 이기에 Unicode 문자열을 사용 • IRP를 작성 드라이버가 전송 받았을 때 수행할 루틴(Routines)를 작성해주어 드라이버를 만듬 • DriverEntry Routine : 드라이버 코드의 시작점 • Initialization Routine : 초기화 루틴 • AddDevice Routine : 드라이버가 부착 시에 동작 할 루틴 • Unload Routine : 드라이버를 해제 시에 동작 할 루틴

  23. 하위 Driver와 통신한다고 생각함 하위 Driver가 IRP를 반환한 것으로 인식 상위 Level Driver or Client Filter Driver IRP를 받아 원하는 작업후 전달 원하는 작업을 한뒤에 IRP 전달 상위 Driver 에게 IRP가 온것으로 인식 처리한 IRP를 상위 Driver로 전달 하위 Level Driver 계층 드라이버(Layered Driver) • 계층 드라이버란? • 드라이버를 계층 단위로 하는 일을 나누어 드라이버를 작성한 것 • 필터(Filter) 드라이버가 계층 드라이버라 할 수 있음 • 필터 (Filter) 드라이버의 투명성 • 마치 스니핑(sniffing)하듯이 IRP를 처리함 • 상위 드라이버나 하위 드라이버는 인식하지 못함 • 때문에 하위 드라이버가 지원하는 루틴을 모두 제공해주어야 함

  24. 실험 내용

  25. Disk Filter 드라이버를 이용한 Diskiomo 드라이버 • Diskiomo 드라이버 (Disk I/O Monitoring Driver) • 디스크 드라이버의 하위 필터 드라이버로서 물리 디스크에게 전송되는 IRP 탐색을 통해 섹터번호와 길이만을 스니핑을 통해 얻어 옴 • 얻은 섹터번호와 길이를 다른 디스크에 “diskio.log”로 저장 • “diskio.log”를 통해 사용자 모드(User Mode)에서 FTL 알고리즘을 실험 할 수 있음 • 탐색한 뒤의 IRP는 그대로 물리 디스크에게 전송해 줌 Disk Driver IRP Communication diskiomo Driver

  26. Disk 실험 환경 Disk Driver diskiomo Driver LogFileReader File write File read FTL_Alg diskio.log File Virtual 플래시 메모리

  27. 실험 환경(cont) • diskiomo.sys 필터 드라이버는 Disk.sys 에서 받은 IRP를 탐색해 I/O에 대한 정보를 얻어냄 • Read인지 Write인지 • 섹터번호 • 길이 • Drive C에 “diskio.log”라는 파일을 생성해 이곳에 이진 타입(Binary Type)으로 계속 저장 • 시뮬레이션 프로그램은 Drive C에 “diskio.log” 파일을 탐색하다가 변화가 있으면 계속 읽어 연산을 수행 (실시간)

  28. Diskiomo 드라이버 실험 환경 • VMWare를 사용하여 윈도우즈 2000 Professional Version에 SCSI 하드 드스크(Hard Disk) 두 개를 생성 • 시스템 디스크(System Disk : Drive C) • “diskio.log” 파일로 E Drive에 발생한 I/O 저장 • 잉여 디스크(Extra Disk : Drive E) • 100 메가바이트(Mbytes) 의 크기 • diskiomo.sys (하위 필터 드라이버)를 부착 • Drive E에 파일 복사와 삭제 연산을 통해 강제로 I/O 발생 • 실험 프로그램을 작성해 Drive C에 있는 “diskio.log”에서 계속 로그(Log) 기록을 읽어 들임 • diskiomo.sys 드라이버가 부착되지 않은 곳에 “diskio.log” 파일을 생성해야 하는 이유 • “diskio.log”로 기록하라는 I/O 자체도 “diskio.log”에 기록하려 하려는 것을 방지하기 위함

  29. 실험 환경

  30. I/O 발생 패턴

  31. Drive E Drive C 실험 환경 구조도 File Copy & Delete Program Simulating Program User Mode Kernel Mode 수행 Disk Driver diskio.log에서 Log를 읽어서 수행 diskiomo Driver diskio.log

  32. diskio.log Structure #define READ 'r' #define WRITE 'w' class Log { public: char RorW; // Read인지 Write인지 [1 Byte] int start; // Start Sector Number [4 Bytes] int length; // 연산할 Sector 길이 [4 Bytes] Log() { RorW = ' '; start = 0; length = 0; } ~Log() {} }; • 실험 할 때 실제로 필요한 정보만을 얻기 위한 구조체

  33. 실험 결과

  34. Drive E diskiomo.sys의 부착 모습 diskiomo.sys의 부착 모습 • Filter Driver Load Order v1.0.005 실행 Diskperf Driver PartMgr Driver Disk Driver diskiomo Driver

  35. Layered 드라이버의 Tree 구조 • Device Tree V2.10 실행 Diskperf Driver PartMgr Driver Disk Driver diskiomo Driver

  36. 실험 프로그램의 동작 모습

  37. 실험 프로그램 정보

More Related