Happy to visit my research note ^^

Design Tradeoffs for SSD Performance ( SSD performance 개발의 basic ) 본문

논문/덜 읽은 논문

Design Tradeoffs for SSD Performance ( SSD performance 개발의 basic )

Liam Lim 2023. 3. 10. 19:32
728x90

Nitin Agrawal∗, Vijayan Prabhakaran, Ted Wobber, John D. Davis, Mark Manasse, Rina Panigrahy Microsoft Research, Silicon Valley ∗University of Wisconsin-Madison

USENIX Association

USENIX ’08: 2008 USENIX Annual Technical Conference

 


Abstract


 

 

  Solid State Disk (SSD)는 storage system 환경을 혁신시킬 가능성이 있다. 그러나 SSD의 internal organization 또는 optimal performance를 위해 SSD 제조업체가 직면하는 설계 선택에 대해 출판된 연구 자료는 거의 없다. 본 논문은 이러한 design choice의 분류를 제시하고, # trace-driven simulator와 real system에서 추출한 # workload trace를 사용하여 다양한 구성의 performance를 분석한다. 본 논문의 저자들은 SSD의 performance와 lifetime이 workload에 매우 민감하다는 것을 발견했으며, 보통 상위 # storage stack 또는 distributed system (분산 시스템)에서 나타나는 복잡한 시스템 문제가 # device firmware에도 영향을 미친다는 것을 알게 되었다.

 

 

 


Introduce


 

 

  NAND-flash based solid-state storage device (SSD)가 등장함으로써 computer storage subsystem(하위 system)의 architecture는 변화할 것으로 예상된다. 이 device들은 rotating disks (회전하는 disk, e.g., HDD)와 비교해서 매우 높은 bandwidth와 몇 배 이상 빠른 random I/O performance를 보여준다. 게다가, SSD는 power cost를 크게 절약할 수 있고, (+참고 1) moving parts가 사라짐으로써 system reliability도 증가한다. 

  Solid-state disks (SSD)는 rotating disk보다 unit capacity당 cost가 훨씬 많이 들지만, SSD가 큰 이점을 제공할 수 있는 많은 application 분야들이 있다. 예를 들어, # transaction-processing systems에서는 operation throughput을 향상시키기 위해 disk capacity가 종종 낭비된다. 이러한 구성에서는 I/O parallelism을 증가시키기 위해 많은 작은 rotating disks들이 사용된다. Random read 와 write performance가 알맞게 최적화된 Large SSD는 느린 rotating disk 전체를 대체하는 데 효과적일 수 있다. 본 논문을 쓰는 (2008년 기준)시점에서, small SSD가 laptop computer에 출시되고 있다. 이는 portable environment에서 power-profile (전력 소비량)이 감소하고 reliability가 향상되기 때문이다. flash 비용이 계속해서 하락함에 따라, solid-state disks의 잠재적 응용 분야는 확장될 것이다.

  SSD가 가지는 잠재적인 가능성에도 불구하고, SSD design (설계)에 있어서 architectural tradeoff에 대한 연구 논문이 많지 않다. 이러한 지식이 있다면, 대개는 SSD manufacture의 intellectual property가 된다. 이로 인해, 특정 device의 architecture를 이해하는 것이 어렵고, performance characteristic을 해석하는 건 더욱 어렵다.

  본 논문에서는 NAND-flash solid-state storage에 관련된 다양한 design tradeoff를 제시한다. 그리고 저자들은 이러한 tradeoff 중 일부를 분석하기 위해 특정 SSD 구성을 특징화하기 위해 맞춤형 disk simulator를 사용한다. 기존 SSD의 자세한 내부 구성에 대해서는 추측할 수밖에 없기 때문에, 저자들은 simulator를 NAND-flash chip의 명시된 특성에 기반해서 구축한다. 저자들의 분석은 TPC-C benchmark, Exchange server workload 및 다양한 standard file system benchmarks와 같은 running system에서 수집된 다양한 추적 데이터에 기반한다.

  저자들은 SSD design에서 발생하는 문제들이 이전에 storage stack의 더 높은 위치에서 발생한 문제들과 유사하다는 것을 발견했다. 이러한 어려운 문제를 해결하면서, design 선택에 있어서 고민을 많이 했다. 저자들은 다음과 같은 system issue가 SSD performance에 영향을 미친다는 것을 보여준다 :

  • Data Placement.    SSD 내의 chip들 사이에서 데이터를 신중하게 배치하는 것은 # load balancing 을 제공하는 것뿐만 아니라 # wear-leveling 을 구현하는 데 매우 중요하다.
  • Parallelism.    어떤 flash chip의 bandwidth와 operation rate는 optimal performance를 달성하기에 충분하지 않다. 따라서, memory components는 parallel로 작동하도록 조정되어야 한다.
  • Write ordering.    NAND flash 특성은 SSD designer에게 어려운 문제를 제시한다. 작고, random하게 요청되는 writes는 특히 까다로운 문제이다.
  • Workload management.    performance는 workload에 따라 매우 달라진다. 예를 들어, sequential workload에서 좋은 성능을 내는 design 결정이 non-sequential workloads에서 성능을 높이는 데 도움이 되지 않을 수 있으며 그 반대도 마찬가지이다.

  SSD의 complexity가 증가함에 따라, 기존의 disk model은 performance를 예측하는 것에 있어서 충분하지 않을 것이다. 특히, (+참고 8) random write performance와 disk lifetime은 disk의 write operation의 locality 때문에 크게 달라질 것이다. 이러한 동작을 특징화하기 위한 새로운 모델을 도입하고, cleaning efficiency를 기반으로한 새로운 wear-leveling algorithm을 제안한다.

  본 논문의 다음 섹션에서는 NAND flash memory의 특성에 대한 background 지식을 알려준다. 그리고 section 3에서는 SSD designer가 제공해야 하는 기본 기능과 이러한 장치를 구현하는 데 필요한 major challenges를 설명한다. section 4에서는 simulation environment를 설명하고 다양한 design 선택의 평가를 제시한다. section 5에서는 SSD wear-leveling에 대해 논의하고 이에 대한 preliminary simulator results를 보여준다. related work는 section 6에서 논의하고, section 7에서는 conclusion을 보여준다.

 


Background


 

 

  본 논문에서는 삼성의 K9XXG08UXM series NAND-flash 제품의 최신 제품 사양을 기반으로 flash memory에 대한 논의가 이루어졌다. 다른 # vendor들인 Micron과 Hynix도 유사한 기능을 가진 제품을 제공한다. 이후 논문에서는 4GB 삼성 제품을 대표적인 예시로 다루며, 다른 vendor의 제품 사양은 일부 측면에서 다를 수 있음을 언급한다. 본 논문에서는 single-level cell (SLC) flash 사양을 기준으로 하며, multi-level cell (MLC) flash는 SLC보다 가격은 저렴하지만, performance와 lifetime 측면에서 불리하다.

 

 

 

 

  Figure 1은 flash package의 schematic(구성도)을 보여준다. flash package는 하나 이상의 dies (also called chips)로 구성된다. 저자들은 2GB die가 공유하는 8bit serial (직렬) I/O bus와 여러 공통 control signals로 구성된 4GB flash package를 설명한다. 두 die는 별도의 chip enable 및 ready/busy signal을 가지고 있다. 따라서 한 die가 command와 data를 받는 동안 다른 작업을 수행할 수 있다. (+참고 9) 이 package는 두 die간의 interleaved (교대로) 작업도 지원한다.

  Package 내의 각 die에는 8192개의 block이 있으며, 2048개의 block이 4개의 plane으로 구성되어 있다. Die들은 독립적으로 작동할 수 있고, each performing operations는 하나 또는 두개의 planes를 포함한다. Two-plane commands는 plane-pairs (0 & 1) or (2 & 3)에서 실행할 수 있지만 다른 조합에서는 사용할 수 없다. 각 block은 64개의 4KB page로 구성된다. data 외에도, Each page에는 metadata (identification and error-detection information)를 저장하기 위한 128 byte region이 포함되어 있다. Samsung 4GB flash memory의 operational attribute은 Table 1에 나와있다.

 

 

 


 

Properties of Flash Memory

 

  Data reads는 flash page 단위 (granularity)로 이뤄지고, typical(일반적인) read operation은 media에서 4KB data register로 읽는 데 25㎲가 소요되고, 그 후 (+참고 2) data bus를 통해 이를 전송한다. # serial line은 1 byte당 25㎱의 속도로 데이터를 전송하며, 대략적으로 페이지당 100㎲가 소요된다. flash media blocks은 새 데이터를 위해 재사용하기 전에 지워져야 한다. erase operation은 1.5㎳가 소요되며, read 또는 write operation보다 더 많은 시간이 필요하다. 또한, 각 block은 일정 횟수 이상 지워질 경우 더 이상 사용할 수 없게 된다. current generation flash는 100K번 erase cycle이 한계이므로, block reuse에 대한 신중한 계획이 필요하다.

  writing (or programming)도 page 단위로 이뤄지며, data를 data register로 이동시켜 (100㎲) flash cell에 기록한다. page는 낮은 주소에서 높은 주소로 block 내에서 sequential하게 기록되어야 한다. 이 부품은 또한 # specialized copyback program operation을 제공해서 serial line을 통해서 external buffer로 data를 전송할 필요가 없어지므로 performance를 향상시킨다. 이 copy operation은 한 page에서 다른 page로 직접 이뤄지며, sequential write operation없이 수행된다. 

  본 논문에서는 2개의 2GB flash package를 다루고 있지만, 더 큰 die나 더 많은 die를 가진 package로 확장하는 것은 간단(straightforward)하다.

 

 


 

 

Bandwidth and Interleaving

 

  flash package가 명령을 수신하고 data를 전송하는 # serial interface 는 SSD performance에 primary bottleneck을 일으킨다. 삼성 제품은 (+참고 10) # on-chip register에서 # off-chip controller로 4KB page를 전송하는 데 약 100㎲가 소요된다. 이는 NAND cell에서 register로 데이터를 이동하는 데 필요한 25㎲보다 훨씬 더 많은 시간이 소요된다. 이 두 작업을 연속으로 수행할 경우, flash package는 초당 8000 page read(32MB/s)만 가능하다. die 내부에서 # interleaving이 사용되면, 단일 부품에서 최대 read bandwidth가 10000read/second (40MB/s)로 향상된다. 반면, (+참고 3) write operation은 read와 같이 1 page 당 100㎲의 serial transfer time이 필요하지만, 200㎲의 programming time이 추가로 필요하다. Interleaving을 적용하지 않으면, 한 파트에서 최대 기록 속도 (write rate)는 3330 page/sec (13MB/s)이다. serial transfer time과 program operation을 interleaving하면 bandwidth가 두 배로 증가한다. 이론적으로, 고려 중인 package에는 두 개의 독립적인 die가 있으므로, 두 die를 합쳐서 세 가지 작업을 interleaving할 수 있다. 이렇게 하면 write and read 모두 serial interconnect의 speed로 진행된다.

 

 

 

 

  Interleaving은 operation latency (연산 대기 시간)이 serial access latency (직렬 접근 대기 시간)보다 길 때 상당한 속도 향상을 제공할 수 있다. 예를 들어, 비용이 많이 드는 erase command는 경우에 따라서 다른 명령 (commands)과 parallel로 진행될 수 있다. 또 다른 예로, 두 package 간의 완전히 interleaved된 page copy는 single write operation의 200㎲ 비용에도 불구하고 Figure 2와 같이 거의 100㎲ 속도로 진행될 수 있다. 이때, 4개의 source plane과 4개의 destination plane이 동시에 동일한 plane-pair에서 동시 작업을 수행하지 않고 양쪽 flash die에 연결된 serial bus pin을 최적으로 활용하여 page를 복사한다. pipe가 load되면 write가 각 interval(100㎲)마다 완료된다. 

  Flash Architecture가 interleaving을 지원하더라도, 심각한 제약 사항이 있다. 예를 들어, 동일한 flash plane에서의 작업은 interleaving될 수 없다. 이것은 flash memory 내의 물리적 구조 때문이다. 한번에 하나의 연산만 수행 가능하기 때문에, 다른 flash block에서 연산을 수행하는 동안 동일한 flash plane에서의 작업은 기다려야 한다. 이러한 constraints로 인해 flash memory의 performance가 저하될 수 있다. 이는 같은 package에서의 interleaving은 서로 연관된 operation의 조화된 집합에 대해 가장 적절하게 활용될 수 있다는 것을 시사한다. 이는 Figure 2에서 나타난 multi-page read or write와 같은 관련된 operation에 대해 가장 적합하다는 것을 의미한다. 본 논문에서 살펴본 Samsung 제품은, 빠른 internal copy-back operation을 지원해서, # serial pin을 건너지 않고 chip 내의 다른 block으로 data를 복사할 수 있다. 이러한 internal copy-back operation은 일반적으로 data를 다른 곳으로 복사하는 것보다 훨씬 빠르며, 효율적인 block reuse를 가능하게 한다. 이 copyback operation은 특히 고급 SSD technique인 virtualization과 비슷한 방식으로 data를 이동하는 경우 유용하다. 이러한 최적화(optimization)은 대가가 따른다 : data는 동일한 flash plane (of 2048 blocks)에서만 복사할 수 있다. plane간의 data 복사를 위해서는 두 번의 copy operation이 필요하게 되어 performance degradation을 야기할 수 있다. 따라서, plane 간 copy가 필요한 경우에는 여러 복사 단계를 통해 진행해야 한다. 이와 같은 두 개의 copy operation은 다른 plane에서 interleave하게 수행될 수 있으며, 그 결과 직접적으로 serial pin을 점유하지 않고 Figure 2에 나와 있는 fully-interleaved된 package 간의 copy와 유사한 performance를 제공한다.

 


SSD Basics


 

  이번 section에서는 NAND flash components를 사용해서 SSD를 constructing할 때 발생하는 basic issue들에 대해 설명한다. 설계는 다양한 차원에서 다를 수 있지만, 구체적인 선택 평가는 다음 section에서 다루도록 하겠다.

 

 

  모든 NAND-based SSD는 이전 section에서 설명한 것과 유사한 flash package 배열에서 구성된다. Figure 3은 SSD의 일반화된 block diagram을 보여준다. 각 SSD는 # physical host interface connection (USB, FiberChannel, PCI Express, SATA)을 지원하기 위한 host interface logic과 # flash translation(변환) layer mechanism과 같은 logical disk emulation을 포함해야 한다. 이는 SSD가 HDD를 모방할 수 있도록 하는 역할을 한다. host interconnect의 bandwidth는 종종 device 전체의 performance에 대한 중요한 제약 조건이며, flash array에서 사용할 수 있는 성능과 일치해야 한다. internal buffer manager는 주요 데이터 경로를 따라 보류 중인 요청과 완료된 요청을 관리한다. # multiplexer (Flash Demux/Mux)는 명령어를 보내고, flash package와 serial connection을 통해 data를 전송한다. multiplexer는 commands(명령어)와 data(데이터)를 buffering하는 additional logic을 포함할 수 있다. Request flow(요청 흐름)과 disk logical block address에서 physical flash location로의 mapping을 관리하는 processing engine도 필요하다. processor, buffer manager, 그리고 multiplexer는 일반적으로 ASIC 또는 FPGA와 같은 별도의 구성 요소에 구현되며, 이러한 logical elements 간의 data flow는 매우 빠르다. processor와 그와 연결된 RAM은 간단한 USB flash-stick과 같은 경우 통합될 수 있으며, 더 많은 processing (처리) 및 memory requirements가 있는 디자인의 경우 독립형으로 구현될 수 있다.

  이전 section에서 설명한 대로, flash package는 비슷한 수의 control pin과 함께 8 bits 폭의 serial data interface를 내보낸다. 8개의 Samsung 부품으로 만든 32GB SSD는 flash component만으로도 flash controller에 136개의 pin이 필요하다. 이와 같은 장치에서는 flash controller와 flash package 간에 완전한 상호 연결이 가능할 수 있지만, 더 큰 구성에서는 이러한 방식이 실용적이지 않을 수 있다. 일단은 data path (데이터 경로), control logic (제어 논리) 그리고 flash 간의 완전한 상호 연결을 가정한다. 이어서 다음 section에서 interconnect density issue (상호 연결 밀도 문제)를 다룰 예정이다.

  본 논문은 주로 flash array의 구성과 logical disk와 physical flash address 간의 mapping을 관리하기 위해 필요한 algorithm에 대한 내용을 다룬다. 본 논문의 범위를 벗어나서 SSD logic component의 설계 (design)와 layout에 대한 많은 중요한 문제들을 다루는 것은 아니다.

 

 


 

 

Logical Block Map

 

  Birrell 등이 지적한 바와 같이, NAND flash의 성격상 rotating disk와는 달리 write operation은 # in place 수행될 수 없다. 게다가, (+참고 11) performance를 충분히 얻기 위해서는 log와 같이 write operation이 가능한 한 sequential하게 이루어져야 한다. Single logical-disk block address (LBA)의 각 write는 다른 flash page에 대한 write와 대응하므로, 가장 간단한 SSD조차도 LBA와 physical flash location 간의 mapping을 유지해야 한다. 논문에서는 logical block map이 volatile memory에 저장되어 startup time (부팅)에 stable한 storage에서 재구성된다고 가정한다.

  본 논문에서는 SSD가 write request를 service하기 위해 flash block을 할당하는 방법에 대해 생각하기 위해, allocation pool이라는 추상화 개념을 사용하여 logical block map에 대한 토론을 했다. 

  • Static Map.    각 LBA의 일부는 특정 allocation pool에 대한 fixed(고정) mapping을 구성한다.
  • Dynamic map.    LBA의 non-static portion(부분)은 pool 내의 mapping을 위한 lookup key이다.
  • Logical page size.    mapping entry의 reference size는 256KB의 flash block에서부터 1/4 page(1KB) size까지 가능하다.
  • Page span.    하나의 logical page는 여러 개의 flash package에서 연관된 pages들을 포함할 수 있다. 이렇게 되면, page의 여러 부분을 parallel로 접근하여 처리할 수 있다. 이러한 기술은 page에 대한 전체 write operation의 latency를 줄이고 high bandwidth를 달성하는 데 도움이 된다.

  These variables들은 세가지 constraints에 의해 제약된다.

  • Load balancing.    이상적으로, I/O operation은 allocation pool 간에 균형있게 분산되어야 한다. 이는 I/O operation이 특정 allocation pool에 집중되어 unprocessable(처리 불능 상태)가 되는 것을 방지하고, 전체적인 performance를 향상시키는 데 도움이 된다.
  • Parallel access.    이상적으로는 LBA를 physical address로 할당하는 것이 해당 LBA들을 parallel로 access할 수 있도록 방해하지 않아야 한다. 예를 들어, LBA0 .... LBAn이 항상 동시에 access되면 각각을 연속적으로 access해야하는 component에 저장해서는 안된다.
  • Block erasure.    flash pages는 erase되기 전에 re-write를 할 수 없다. contiguous page의 고정 크기의 block만 지울 수 있다.

 

  Allocation pool을 정의하는 변수들은 이러한 constraints들과 상충하여 조정된다. 예를 들어, LBA 공간의 큰 부분이 static으로 mapping되어 있으면, load balancing에 대한 영역이 거의 없다. 연속적인 LBA 범위가 동일한 physical die로 mapping되면 대용량 sequential access performance가 저하된다. 크기가 작은 logical page의 경우, erasure candidates에서 valid page를 제거하기 위해 더 많은 operation이 필요하다. Logical page size (단위 범위로)가 block size와 동일한 경우, write unit(단위)과 erase unit이 동일해서 erasure이 간편해진다. 그러나, logical page size보다 작은 모든 writes들은 수정되지 않는 logical page의 이부를 포함하는 (+참고 4) read-modify-write operation을 발생시킨다.

 # RAID system은 종종 logically contiguous chunks of data (e.g., 64KB or larger)를 여러 physical disks에 # striping한다. 여기서, fine (세밀한) granularity에서 striping을 사용하여 logical page (4K)를 여러 flash die 또는 package에 분산시킨다. 이렇게하면 load (부하)를 분산시키는 데 도움이 되며 연속된 page가 병렬로 access할 수 있는 서로 다른 package에 배치되도록 하는 데 도움이 된다.


Cleaning

 

  Birrell et al.에서 제시한 설계를 구체화하여, flash block을 allocation pool 내에서 nature allocation unit으로 사용한다. 언제든지, pool은 들어오는 write operation을 처리할 수 있는 하나 이상의 active block을 가질 수 있다. 계속해서 새로운 active block 할당을 지원하려면, 사용된 block을 열거(계산, enumerate)하고 지워서 재활용해야하는 garbage collector가 필요하다. logical page의 granularity가 flash block size보다 작으면, flash block을 지우기 전에 block을 정리해야한다. Cleaning은 다음과 같이 요약할 수 있다. page write가 완료되면 이전에 mapping된 page location은 더 이상 최신이 아니므로 대체된다. candidate block을 재사용할 때, 후보 내에서 최신이 아닌 page는 모두 삭제 전에 다른 곳에 기록되어야 한다. 

  최악의 경우, # superseded(대체된) page가 모든 block에 균등하게 분포되어 있으면, (block당 N page가 있을 때마다) 새 data write operation에 대해 N-1개의 cleaning writes가 발생해야 한다. 그러나 대부분의 workloads는 data가 overwritten될 때, block당 여러 superseded page를 생성하므로 이러한 경우에는 cleaning efficiency를 높이기 위해 최적화하는 것이 좋다. Recycling을 위한 candidate block을 선택하는 많은 algorithm이 있지만, 항상 cleaning efficiency를 최적화하는 것이 바람직하다. sequential address에 parallel access를 향상시키기위한 striping의 사용은 superseded page의 # clustering을 방해하는 것을 유의해야한다.

  각 allocation pool마다, 본 연구에서는 recycled block들로 구성된 free block list (빈 블록 목록)을 유지한다. 이번 section과 다음 section에서는, 잠재적인 cleaning efficiency에 따라 재활용할 block을 선택하는 # purely greedy approach 방식을 가정한다. 이전 section에서 설명한대로, NAND flash는 block당 limited number of erasures를 가진다. 각 block이 candidates for recycling을 선택할 때 block을 고르게 노후화?(낡게?) 이루어지도록 선택하는 것이 좋다. 이러한 속성은 wear-leveling process를 통해 시행된다. 다음 section에서는 choice of cleaning candidates가 직접적으로 wear-leveling과 상호작용하는 방식과 modified greedy algorithm을 제안한다.

  (+참고 5) SSD는 전통적인 disk interface를 # emulation하므로 free disk sector의 abstraction이 없다. 따라서, SSD는 광고된 capacity에 비해 항상 가득 차 있다. cleaning이 작동하려면, write and cleaning을 진행할 충분한 spare block (전체 용량에 포함되지 않는)이 있어야 하며, block fail이 발생하면 block replacement가 가능해야 한다. SSD는 이런 spare capacity로 크게 over-provisioning을 구성할 수 있다. 이를 통해, foreground에서 block cleaning에 대한 demands를 줄이고 delayed block cleaning은 non-random workloads에서 superseded pages의 clustering을 개선할 수 있다.

  이전 section에서는 특정 LBA가 specific allocation pool에 static하게 mapping된다고 규정했다. 그러나 Cleaning은 finer granularity에서도 작동할 수 있다. 이를 수행하는 이유 중 하나는 이전 section에서 설명한 copy-back operation과 같은 flash architecture의 low-level efficiency를 활용하기 위해서이다. 이 작업은 page가 동일한 plane 내에서 이동할 때만 적용된다. 2048 개의 block으로 구성된 단일 flash plane은 load distribution을 위한 매우 작은 allocation pool을 나타내므로 더 큰 pool에서 할당하고자 한다. 그러나, plane 당 active block 과 cleaning state를 유지하면 동일한 plane 내에서 cleaning 작업을 높은 확률로 배치할 수 있다.

  Block cleaning을 Log-Structured File System에서의 log-cleaning과 유사하다고 생각할 수도 있지만, 몇 가지 차이점이 있다. 저자들은 file system 대신 block store를 모델링한다는 점과, strict disk-order로 write하고 clean하는 log-structured store는 cleaning efficiency가 높아지도록 candidate block을 선택할 수 없다. 또한, LFS와 같은 file system에서처럼 모든 복구 가능한 공간이 log의 cleaning pointer에서 멀리 떨어진 위치에 위치하는 workload를 결합하는 것이 매우 쉽다. 예를 들어, 같은 block set을 반복적으로 쓰면 cleaning pointer가 log의 끝 부근의 빈 공간에 도달하기 위해 disk content 전체를 순환해야 한다. 또한, (+참고 7) log-structured file system과 달리 disk는 항상 "full"이며, 항상 최대 cleaning pressure를 받게 된다.

  

 

 

 

 

 

 

 

 

 

 

 

 

 

 



# 참고 설명


 

 

(+참고 1) moving parts가 사라짐으로써 system reliability도 증가 

  SSD는 legacy hard-disk drive와 달리 rotating disk와 움직이는 read/write head와 같은 기계적인 부품이 없다. 이런 이유로 SSD는 disk conflict, head conflict, or moter error와 같은 기계정인 장애의 발생 가능성이 줄어든다. 또한, 기계적 부품이 없기 때문에 SSD는 충격이나 진동에 덜 민감하며, 더 튼튼한 환경에서 더욱 reliability (신뢰성)가 높아진다. 이러한 improve된 reliability는 더 긴 lifetime과 더 낮은 error rate로 이어지고, 이는 전반적인 system reliability를 향상시킨다.

+

 

(+참고 2) Data Bus

  Data Bus는 computer system에서 CPU와 기타 주변장치들 간에 data transmission을 위해 사용되는 전송 경로이다. data bus는 기본적으로 병렬 전송 방식을 사용하고, 여러 bit의 data를 한 번에 전송할 수 있다.

 예를 들어, CPU에서 memory로 data를 전송할 때, CPU가 해당 data가 저장된 memory address를 지정하면, # memory controller는 해당 address에서 data를 읽어서 data bus를 통해 CPU로 전송한다. 

+

 

(+참고 3) write operation은 read와 같이 1 page 당 100㎲의 serial transfer time이 필요하지만, 200㎲의 programming time이 추가로 필요

 serial transfer time은 data를 register에서 외부 controller로 이동시키는 데 걸리는 시간을 말하며, programming time은 data를 쓰는 데 걸리는 시간을 말한다. 즉, serial transfer time은 데이터를 이동시키는 데 필요한 시간이고, programming time은 데이터를 실제로 쓰는 데 걸리는 시간이다.

+

 

(+참고 4) read-modify-write operation

  Read-modify-write operation은 flash memory에서 write operation을 수행할 때 일어나는 작업 중 하나이다. 이 작업은 data를 쓰기 전에 읽어와야 하는 상황에서 발생한다. 예를 들어, 만약 4KB 크기의 logical page가 있다면, 이 page 중 일부분만 업데이트를 하고자 하는 경우, 해당 page의 데이터를 읽어오고, 업데이트하고자 하는 부분을 수정한 뒤, 전체 페이지를 다시 쓰는 것이 아니라 수정한 부분을 쓰는 작업을 수행한다.

  이러한 작업은 performance degradation을 일으키며, 특히 작은 크기의 write operation이 빈번하게 일어나는 경우에는 더욱 그렇다. 따라서, flash SSD에서는 가능한 경우 write operation을 큰 logical page 단위로 묶어서 수행하고, 작은 크기의 write operation은 buffering 등의 기법을 사용하여 대량의 write operation으로 변환하는 등의 방법으로 최소화하려는 노력이 있다.

+

 

(+참고 5) SSD는 전통적인 disk interface를 # emulation하므로 free disk sector의 abstraction이 없다. 

  SSD는 HDD와 같은 storage media가 될 수 있도록 interface를 Emulation한다. 이것은 User가 기존의 HDD와 마찬가지로 SSD에 file system을 포맷하고 읽고 쓰고 삭제할 수 있게 해주는 것을 의미한다. 하지만 HDD와 달리, SSD는 disk sector를 직접적으로 할당하는 대신에, 내부적으로 flash memory block을 관리한다.

  SSD의 flash memory는 지속적인 소모 및 갱신이 일어나기 때문에 write operation을 수행하면 해당 block에 있는 데이터가 지워지고 새로운 데이터로 대체된다. 이 과정에서, write operation을 우히ㅐ 사용할 수 있는 block을 수가 감소하게 되므로, 이를 관리하기 위한 특별한 mechanism이 필요하다. 이러한 이유로 SSD는 별도의 over-provisioning 영역을 두어 일정량의 block을 확보한다. 이 영역은 사용 가능한 block을 보충하거나 block replacement를 위해 사용된다. 예를 들어 1TB SSD를 광고하는 경우, 이 중 일부 공간이 over-provisioning 공간으로 사용된다. 따라서 사용자가 실제로 사용할 수 있는 용량은 1TB 미만일 수 있다. 용량면으로 덜 쓰는 느낌이어서 안 좋게 들릴 수 있지만, over-provisioning 공간을 이용하면 더 나은 performance와 lifetime을 위해 block 정리 작업 등의 background 작업을 수행할 수도 있다.

  이러한 구조로 인해, SSD는 기존의 HDD와 달리, logical data storage location 과 physical flash memory가 분리되어 있지 않다. 즉, SSD의 용량이 가득 차면, 새로운 data를 저장하기 위해 기존의 데이터를 삭제하고 비어 있는 공간을 만들어 줘야하는 것을 의미한다. 따라서, cleaning 작업을 수행하려면 write operation과 cleaning이 진행될 수 있도록 충분한 여유 block이 필요하고, block의 수명이 다할 시에 대체할 block이 필요하다. 이러한 이유로 SSD는 over-provisioning을 통해 충분한 free space를 제공할 수 있다. (+참고 6) 이는 foreground에서 cleaning block을 요구하는 수요를 줄이는 데 도움이 되고, delayed block cleaning은 비정상적인 workload에 대해 superseded pages의 clustering을 개선할 수 있다.

+ -> superseded block이 발생 cleaning block & clustering 해결 안됨

 

(+참고 6) 이는 foreground에서 cleaning block을 요구하는 수요를 줄이는 데 도움이 되고, delayed block cleaning은 비정상적인 workload에 대해 superseded pages의 clustering을 향상시킬 수 있다.

  우선, foreground란, 사용자의 현재 작업에 집중하는 상태를 의미한다. 컴퓨터에서 foreground는 현재 실행 중인 application, process or tasks를 의미한다. 예를 들어, 사용자가 web browser에서 작업하고 있으면 web browser가 foreground에 있다.

  /////

 

  

 

 

(+참고 7) log-structured file system과 달리 disk는 항상 "full"이며, 항상 최대 cleaning pressure를 받게 된다.

  

 

 

 

 

+

 

(+참고 8) random write performance와 disk lifetime은 disk의 write operation의 locality 때문에 크게 달라질 것

  disk의 write operation에서 locality가 중요한 이유는 write operation에 대한 latency와 disk`s lifetime에 영향을 미치기 때문이다.

  Random write operation은 random block에 대한 write operation이 이루어지기 때문에 disk head가 지속적이로 이동해야한다. 이동하는 데에는 시간이 걸리므로 random write operation을 수행할 때마다 disk에서의 latency가 증가한다. 이러한 latency는 disk`s performance를 떨어뜨리는 데, 이는 user의 경험에 부정적인 영향을 준다.

  또한, random write operation은 특정 block이 지속적으로 쓰여지게 된다. 이는 해당 block의 lifetime을 단축시키며, 이는 disk의 lifetime을 단축시킬 수 있다.

  반면에 sequential write operation은 contiguous blocks에 대한 write operation이 이뤄지기 때문에 disk head가 지속적으로 이동할 필요가 없다. 이는 random write operation에 비해 disk latency를 줄일 수 있으며, disk`s performance를 향상시킨다. 또한, sequential write operation은 특정 블록이 지속적으로 쓰여지지 않고 여러 블록에 걸쳐 쓰여지게 된다. 이는 disk의 lifetime을 연장시키는 데 도움이 된다.

  결국, disk write operation의 locality는 random write operation과 sequential write operation에 따라 disk performance와 lifetime에 영향을 미치게 된다.

+

 

(+참고 9) 이 package는 두 die간의 interleaved (교대로) 작업도 지원한다.

  SSD의 NAND flash memory는 여러 개의 Die를 하나의 Package에 집적시켜서 사용된다. 각 Die는 독립적으로 작동할 수 있으며, package 내에서 각각의 die는 parallel로 작업을 수행할 수 있다.

  "Interleaved"는 두 개의 Die 간에 교대로 작업을 수행하는 것을 의미한다. 예를 들어, 두 개의 Die 각각에 4KB의 page가 있다면, package 내에 두 개의 die를 교대로 작업하면 8KB의 데이터를 읽거나 쓰는 것이 가능해진다. 이는 SSD의 성능을 향상시키는 방법 중 하나이다.

+

 

(+참고 10) # on-chip register에서 # off-chip controller로 4KB page를 전송

  Computer에서 Register는 CPU가 계산을 수행하는 동안에 data나 command를 저장하는 데 사용되는 고속 메모리이다. Register는 CPU 내부에 있어서 CPU에서 접근이 빠르다. 그러나 Register의 크기는 작고, 그 안에 저장할 수 있는 데이터의 양도 적다. 그래서, Register는 Off-chip memory같은 큰 메모리 공간과 협력해서 데이터를 처리한다.

  이 때, 데이터를 처리할 때 off-chip register에 있는 page를 on-chip register로 전송하게 된다. page는 일반적으로 page를 전송하면, cpu는 page를 읽어서 처리를 수행한다. 이러한 page transmission은 DMA (Direct Memory Access)를 통해 이뤄지고, cpu의 개입 없이 memory 간 data transmission이 가능하도록 한다.

  on-chip register와 off-chip register를 적절하게 협력하여 data를 처리함으로써, cpu의 performance를 높일 수 있다.

+ 

 

(+참고 11) performance를 충분히 얻기 위해서는 log와 같이 write operation이 가능한 한 sequential하게

  NAND Flash 특성상, data를 기록하고 삭제하는 것은 sequential하게 일어나지 않는다. 왜냐면, existing data를 삭제하고 new data를 기록할 때, 일반적으로 new data를 기록하기 위한 physical space를 찾아야하기 때문이다. 그래서, data를 기록하고 삭제하는 작업이 sequential하게 이루어지지 않을 경우, performance 문제가 발생할 수 있다.

  이런 문제를 해결하기 위해, 많은 NAND Flash-based storage는 log와 같은 방식으로 write operation을 수행한다. Log는 new data가 기록될 때마다 뒤에 이어붙이는 방식으로 동작한다. 이 방식은 sequential한 기록을 유지하기 때문에 write operation의 performance를 크게 향상시킬 수 있다. 또한, 삭제된 data는 # log의 끝에서 별도의 작업 없이 간단히 삭제할 수 있다.

  따라서, storage performance를 최적화하기 위해서는 write operation을 가능한 한 sequential하게 수행하는 것이 중요하다. 

+

 

 

 


 


# 용어 정리


 

 

 

# trace-driven simulator

  trace-driven simulator는 입력된 trace data를 기반으로 system의 동작을 simulation하는 program이다. 이러한 simulation은 computer system의 동작을 이해하고 분석하는 데 유용하다. trace-driven simulator는 computer system의 다양한 구성 요소 및 상호 작용을 모델링할 수 있다. 이를 통해 system performance, throughput, energy efficiency, etc.를 평가할 수 있다. 이 방법은 system design and optimization에 유용하며, 특히 복잡하고 대규모인 system에서 매우 유용하다.

#

 

# workload

  workload는 시스템이나 응용 프로그램에서 발생하는 작업 부하를 의미한다. 이 작업 부하는 일반적으로 시스템에서 수행되는 작업의 종류, 시간 및 빈도 등을 나타낸다. 따라서, 본 논문에서 " workload traces "는 실제 시스템에서 추출한 작업 부하 추적 데이터를 의미한다. 이러한 작업 부하 추적 데이터는 시스템에서 발생하는 실제 작업 부하를 반영하므로, 이를 사용하여 시뮬레이션을 수행하면 보다 현실적인 결과를 얻을 수 잇다.

#

 

# storage stack 

  Storage stack은 computer system에서 data를 저장하는 hierarchy한 구조를 말한다. 일반적으로는 hardware, operating system, file system, database management system 등 다양한 software and hardware 구성 요소로 이루어져 있다.

  상위 storage stack에서는 일반적으로 데이터를 file system을 통해 저장하고 관리한다. file system은 file 및 folder와 같은 abstraction (추상화 개념)을 사용하여 data를 저장하고 검색할 수 있는 interface를 제공한다. 이러한 data는 일반적으로 disk, SSD, network storage 등과 같은 하위 storage stack에 실제로 저장된다.

  즉, 상위 storage stack은 하위 storage stack에서 data를 가져오고 저장하기 위한 추상화된 interface를 제공하는 것이다.

#

 

# device firmware

  여기서 device firmware는 hardware와 software 사이에 위치한 software로, hardware를 제어하고 시스템의 기능을 지원하는 역할을 한다. 예를 들어, SSD의 경우 device firmware가 disk의 controller를 제어하면, data의 저장 및 reads를 관리하고 수행한다.

  일반적으로 "firmware"는 hardware를 제어하는 software를 의미한다. 이는 hardware에 내장되어 있으며, hardware performance를 최적화하거나 system의 기능을 제어하는 등의 역할을 수행한다. 예를 들어, computer의 BIOS, # graphic card의 driver 등이 모두 firmware로 분류될 수 있다.

#

 

# graphic card

  Graphic Card는 컴퓨터에서 화면 출력을 담당하는 장치이다. CPU가 처리한 graphic data를 graphic card가 전담하여 화면에 출력한다.

  graphic card는 GPU(Graphics Processing Unit)라는 microprocessor와 graphic memory를 포함하고 잇다. GPU는 CPU와 달리 대량의 병렬 처리가 가능하므로, graphic 처리에 최적화된 구조를 가지고 있다. 또한, graphic memory는 빠른 속도와 대용량을 가지고 있어 대규모 graphic data를 빠르게 처리할 수 있다.

 graphic card는 2D와 3D graphic 모두를 지원한다. 2D graphic은 주로 일반적인 window 작업, 이미지 편집, 문서 작업 들을 위해 사용되며, 3D graphic은 게임, 영화, CAD 등의 고급 graphic 처리를 위해 사용된다.

  최근에는 인공지능(AI), 빅데이터, 가상현실(VR) 등의 기술 발전으로 graphic card의 활용 범위가 넓어지고 있다. 이에 따라 graphic card는 게임, 영상 제작, 연구 및 개발 분야 등에서 핵심적인 역할을 하고 잇다.

  상위 storage stack에서는 graphic card가 입력 장치, 출력 장치 등 다양한 hardware와 상호 작용하며, operating system이나 graphic driver를 통해 user interface를 제공한다.

#

 

# NAND Flash memory

  NAND Flash Memory는 flash memory의 일종으로, 주로 SSD (Solid State Drive) 및 휴대용 기기의 storage device에 사용된다. NAND는 "NOT AND"를 의미하며, 디지털 회로에서 논리적인 NOT 연산을 나타내는 logical gate를 사용하여 작동한다.

  NAND flash memory는 전자 기기의 data storage device로서 주로 사용된다. existing HDD와는 다르게 기꼐 구조나 회전 부품이 없어 high performance와 durability를 가지고 있다. NAND는 large-scale data 저장이 가능하고, 상대적으로 저렴한 가격과 소비 전력이 적다는 장점을 가지고 있다.

  NAND는 특정 block에 대한 erase and write operation을 수행하는 것이 가능하며, 재사용도 가능하다. 이러한 특성은 NAND flash memory를 portable device에서 data storage device로 사용하는 데 적합하게 만들어주었다. 하지만, NAND는 한 번에 하나의 block에만 write operation을 수행할 수 있기 때문에 data를 지우고 다시 기록하는 과정에서 latency가 발생할 수 있다. 이러한 문제를 해결하기 위해, 여러 기술적인 발전이 이루어지고 있다.

#

 

# transaction-processing systems

  transaction(거래, 매매)-processing system은 database system의 일종으로, 여러 user가 동시에 데이터를 read and write operation을 수행할 때 # Data Integrity (데이터 무결성) 을 유지하기 위해 고안된 system이다. 대표적인 예로 은행의 ATM system이나 인터넷 쇼핑몰의 결제 시스템 등이 있다. 이러한 system에서는 # concurrency control (동시성 제어) 를 위한 여러 기술이 사용되며, 대용량의 데이터를 빠르게 처리하기 위한 # disk space utilization 도 중요한 고려 사항중 하나이다.

#

 

# disk space utilization (디스크 공간 활용)

  Disk space utilization이란, HDD, SSD 등의 storage device에서 file과 data가 차지하는 실제 공간의 비율을 나타낸 것이다. 예를 들어, 100GB 용량의 HDD가 있고, 해당 disk에서 50GB의 file과 data가 저장되어 있다면, disk space utilization은 50%이다. disk space utilization을 최적화하는 것은 storage device를 효율적으로 사용하고 capacity를 확보하는 데 중요하다. 이를 위해, 사용하지 않는 file을 삭제하거나 compaction, 정리하는 등의 작업이 필요하다. 또한, capacity가 큰 file을 작은 단위로 분할하여 저장하거나, file compaction function을 활용하는 등의 방법으로 disk space를 더욱 효율적으로 활용할 수 있다.

#

 

# operation / job, work, task

  보통 read operation은 데이터를 읽는 작업 자체를 의미한다. 반면에 read work/task/job 은 보다 큰 의미로, 데이터를 읽기 위해 수행되는 모든 작업을 포함한다. 이러한 작업에는 데이터 요청, 디스크에서 데이터를 읽는 등의 작업이 포함될 수 있다. 

#

 

# Data Integrity (데이터 무결성)

  데이터가 원래 의도한 방식대로 유지되고 변경되지 않았음을 보장하는 것을 의미한다. 즉, protection mechanism for maintaining accuracy (정확성), consistency (일관성), validation (유효성), reliability (신뢰성) of data 이다. 이를 위해, 데이터의 생성, 저장, 전송, 처리, 보관 등의 모든 과정에서 integrity를 유지하기 위한 방법과 절차가 필요하다. Data Integrity는 database 및 정보 시스템에서 매우 중요한 요소 중 하나이며, 데이터의 위조나 변조, 손상 등을 방지하여 data reliability와 security를 유지하는 데 기여한다.

#

 

# concurrency control (동시성 제어)

  여러 개의 process나 thread가 동시에 공유하는 데이터에 접근할 때 발생할 수 있는 문제를 해결하는 기술이다. 동시에 여러 개의 process나 thread가 데이터를 수정하면 data consistency가 깨지거나, 데이터의 일부가 손실될 수 있기 때문에 이를 방지하기 위한 기술이다.

  concurrency control은 주로 Database Management System (DBMS)에서 사용된다. DBMS에서는 여러 사용자가 동시에 데이터에 접근하고 수정할 수 있기 때문에 concurrency control이 필요하다. concurrency control을 위해 다양한 기법이 사용되며, 대표적인 것으로 Locking, MVCC(Multiversion Concurrency Control), Optimistic Concurrency Control 등이 있다.

#

 

# load balancing

  load balancing은 여러 대의 컴퓨터, 네트워크 등에게 작업을 나누어 분산시켜 처리하는 방식이다. 이 방식은 전체 시스템의 performance를 향상시키고, stability와 availability를 높이는 데에 유용하다. load balancing은 작업을 처리하는 서버에 부하를 고르게 분산시키기 위해 여러 가지 algorithm을 사용한다. 이를 통해, 서버 부하가 고르게 분산되어 일부 서버만 과부하가 걸리는 일을 방지하고, 전체 서버의 performance를 균등하게 유지할 수 있다.

#

 

# wear-leveling

  wear-leveling은 SSD나 USB flash driver와 같은 flash memory based storage device에서 사용되는 기술로, 각 memory block마다 제한된 erase/write period를 골고루 분산시켜 전체 device의 lifetime을 균등하게 유지시키는 것이다. flash memory cell은 유한한 수명을 가지고 있기 때문에, 같은 block에 반복적인 write 및 erase operation이 발생하면 해당 block이 더 빨리 소모되고 사용할 수 없게 되어 잠재적인 데이터 손실 및 장치 장애로 이어질 수 있다.

  이를 방지하기 위해 wear-leveling algorithm은 logical block address를 physical block address로 동적으로 mapping해서 장치 내 모든 block에 read/write 주기를 고르게 분산시킨다. 이렇게 함으로써 한 블록에만 집중적인 stress가 가해지는 것을 방지한다. wear-leveling은 flash based storage device의 lifetime을 상당히 연장시킬 수 있으며, 전체적인 reliability를 향상시키고 data loss 가능성을 줄이는 데 큰 역할을 한다.

#

 

# vendor

  일반적으로 다른 회사에 제품이나 서비스를 공급하는 회사를 가리키는 용어이다. (e.g., 삼성은 NAND-flash memory를 다른 기업에 판매하는 vendor이다.)

#

 

# memory controller

  memory controller는 CPU와 memory 사이에서 data transmission을 조율하는 장치이다. CPU가 memory에 data를 쓰거나, memory에서 data를 읽어올 때, memory controller는 이를 처리하고 데이터 전송이 올바르게 이루어지도록 도와준다. memory controller는 data transmission의 accuracy를 검증하는 역할도 수행하지만, 이는 data가 전송되는 동안 data의 integrity를 유지하기 위한 것이다.

#

 

# specialized copyback program operation

  NAND flash memory에서 page copy를 수행하는 고유한 방법이다. 이 작업은 특별한 write operation이나 전체 block copy없이 단일 page에서 다른 page로 직접 수행된다. 이를 통해 data transmission을 줄이고 전체적인 performance를 향상시킨다. 이 방법은 외부 버퍼 (external buffer)를 거치지 않기 때문에 고속의 performance를 유지할 수 있다. 이 작업을 하는 데에는 serial line이 사용된다.

#

 

# serial line

  serial line은 flash package가 명령을 받고 데이터를 전송하는 데 사용되는 interface이다. 이는 주로 NAND flash memory와 controller 간의 통신을 처리한다. 이 interface는 데이터 전송 속도와 SSD 성능에 매우 중요한 역할을 한다. 위에서 언급한 바와 같이 write와 programming operation은 page 단위로 이루어지며, 데이터는 먼저 data register로 이동한 후 flash cell에 기록된다. 그리고 page는 낮은 주소에서 높은 주소로 block 내에서 sequential하게 기록되어야 한다. 이를 위해, flash package는 specialized copyback program operation을 제공한다. 이 operation은 한 page에서 다른 page로 직접 이루어지며, sequential write operation없이 수행된다. 이러한 작업을 수행하는 데에도 serial line이 사용된다.

#

 

# serial interface (직렬 인터페이스)

  serial interface는 하나의 bit씩 sequential하게 데이터를 전송하는 interface이다. 이는 parallel interface(병렬 인터페이스)와 달리 하나의 신호선만 사용하므로 연결이 단순해지고 transmission speed가 빨라진다. 예를 들어, USB와 RS-232는 serial interface를 사용한다. SSD에서는 serial interface가 flash package에 명령을 보내고 데이터를 전송하는 데 사용된다. flash package는 serial interface를 통해 controller와 통신하며, 이를 통해 SSD의 작동과 data transmission speed를 control할 수 있다.

#

 

# interface

  interface란 서로 다른 두 개체 또는 system 사이에서 상호 작용할 수 있도록 하는 접점, 경계면, 중개자 등을 의미한다. 일반적으로 컴퓨터 분야에서는 interface가 서로 다른 hardware, software, network 등 사이에서 상호 작용하기 위한 규칙, 규격, 규약 등을 포함하며, 데이터와 명령어 등을 전송하는 데 필요한 interface와 제어 interface 등이 있다. 즉, interface는 서로 다른 시스템 사이에서 연결고리 역할을 하며, 이를 통해 데이터와 명령어 등을 주고 받을 수 있게 된다.

#

 

# On-chip register

  chip 내부에 위치한 register이며, 이전에 읽거나 쓴 데이터를 일시적으로 저장하는 임시 저장 공간이다. 이것은 flash cell로부터 데이터를 불러오는 데 필요한 시간을 줄이고, write operation을 더 효율적으로 수행할 수 있게 한다.

#

 

# Off-chip controller

  chip 외부에서 위치한 controller이다. 이 controller는 SSD의 memory와 CPU간의 통신을 담당하고, data transmission 및 storage management operation을 처리한다. 4KB page가 on-chip register에 load되면, controller는 해당 page를 필요한 위치로 이동시켜 저장한다. 따라서 data transmission speed는 on-chip register에서 off-chip controller로의 이동 시간에 따라 결정된다.

#

 

# interleaving

  Interleaving은 컴퓨터에서 여러 개의 작업이 동시에 처리될 수 있도록 하는 기술로, 작업이 동시에 실행되는 것처럼 보이도록 하는 것이다. SSD에서 interleaving은 여러 개의 NAND flash chip을 병렬로 연결하여 데이터를 동시에 읽거나 쓰도록 하는 기술을 의미한다.

  예를 들어, 2개의 NAND flash chip이 있다고 가정해본다면, 하나의 chip은 8000 page read/write speed를 가지고 있으며, 이 경우 2개의 chip을 병렬로 연결하면 전체 속도를 16000 page read/write speed로 향상시킬 수 있다. 이렇게 parallel로 연결된 chip 사이에서 작업이 분산되어 수행되므로, 전체적으로 SSD의 performance가 향상된다.

#

 

# Serial pin

  Serial pin은 부품 내부의 interface에서 data가 input/output되는 pin을 의미하고, chip은 부품 자체를 의미한다. 즉, serial pin은 데이터가 전송되는 경로를 의미하고, chip은 데이터가 저장되는 부품 자체를 가리킨다.

#

 

# physical host interface connection 

  컴퓨터와 SSD 사이에 데이터를 주고받을 수 있는 물리적인 연결을 의미한다. 컴퓨터와 SSD가 서로 호환되는 interface를 사용해서 연결해야 한다. 예를 들어, 일반적으로 대부분의 컴퓨터에서 사용되는 SATA interface는 SSD와의 physical connection을 지원한다.

#

 

# Flash translation layer mechanism

  이것은 SSD의 논리적 구조와 물리적인 구조 간의 변환을 담당한다. 일반적으로 SSD의 내부 NAND flash memory는 block으로 구성되어 있다. 하지만 SSD를 사용하는 host computer는 일반적으로 file system의 형태로 데이터를 저장하고 액세스한다. 따라서 SSD는 file system에서 액세스할 수 있는 logical block을 physical NAND flash block으로 mapping하는 일종의 변환 작업이 필요하다. 이러한 작업을 수행하는 것이 Flash Translation Layer (FTL)이다. FTL은 SSD 내부의 controller chip에 내장되어 있으며, SSD의 논리적인 구조를 관리하고, host computer에서 요청한 데이터에 대한 physical address를 mapping한다. 이를 통해 host computer는 file system을 사용해서 SSD에 데이터를 저장하고 읽을 수 있다.

#

 

# multiplexer (Flash Demux/Mux)

  Multiplexer는 여러 개의 입력 신호 중에서 하나의 출력 신호를 선택하는 회로를 말한다. 이것은 여러 개의 입력으로부터 하나의 출력을 생성하기 위해 사용된다. SSD에서 Multiplexer는 flash package와 host interface 간의 통신을 담당하는 장치이다. 특히, command와 data를 보내고, 데이터 전송을 처리하며, 데이터를 다시 받아서 전성혼다. 또한, 추가 로직을 포함하여 명령어와 데이터를 버퍼링할 수 있다. Multiplexer는 SSD의 performance에 큰 영향을 미치는 장치 중 하나이다.

#

 

# RAID system

  RAID (Redundant Array of Inexpensive Disks) system은 여러 개의 disk를 사용해서 데이터를 분산 저장하고, 이에 대한 복구 및 오류 보정을 제공하는 기술이다. 여러 disk에 분산하여 저장함으로써 disk의 속도와 용량을 향상시키고, data에 대한 reliability를 높인다.

#

 

# Striping

  striping은 여러 개의 disk에 data를 분산하여 저장하는 방식 중 하나이다. 여러 개의 physical disk를 하나의 logical space로 인식하고, 그 공간에 data를 일정한 크기의 block으로 나누어 저장한다. 이렇게 하면 disk의 용량을 효율적으로 사용할 수 있고, 동시에 여러 disk에서 병렬로 데이터를 읽고 쓰므로 processing speed가 빨라진다.

#

 

# superseded(대체된) page

  SSD에서는 free disk sector의 개념이 없기 때문에, write operation이 수행될 때마다 해당 block에 기존 data를 지우고 새로운 data가 기록되는 read-modify-write를 하게 된다. 그리고 해당 block에 포함된 모든 page중에서 가장 오래된 page에 write를 하고, 해당 page를 superseded page라고 한다.

#

 

# clustering

  " Clustering "은 data나 개체들이 비슷한 특성을 가지고 뭉쳐있는 것을 의미한다. data analysis나 data mining에서 자주 사용되는 용어 중 하나이다. 예를 들어, client data에서 구매 패턴이 비슷한 고객들을 같은 cluster에 묶는 것이 가능하다. 이러한 clustering을 통해 패턴이나 규칙을 찾아내거나 유용한 인사이트를 얻을 수 있다.

#

 

# purely greedy approach 

  " purely greedy approach "란, 어떠한 결정을 내릴 때 그 순간 가장 이익이 큰 선택을 하는 방식을 말한다. 이 방식은 상대적으로 간단하고 대부분의 경우 효과적인 방법 중 하나이지만, 전체적인 최적의 결과를 보장하지 않을 수 있다. 

  예를 들어, 어떤 문제에서 선택의 결과를 가장 즉각적인 이익만을 고려하여 결정한다면 그것은 greedy algorithm이다. 이러한 algorithm은 optimal solution을 보장하지 않지만, 일반적으로 계산 시간이 짧고 간결하여 많은 경우에 유용하게 사용된다.

#

 

# emulation

  " Emulation은 hardware나 software를 다른 hardware나 software 환경에서 동작할 수 있도록 모방하는 기술이다. 예를 들어, 컴퓨터에서 virtual machine을 이용하여 다른 OS를 실행할 수 있는 것도 Emulation의 한 예이다. 이러한 방식으로 구현된 장치들을 Emulation device라고 한다. SSD가 HDD interface를 Emulation하면, 사용자는 HDD처럼 사용할 수 있다.

#

 

# locality

  locality는 computer science에서 data가 특정한 지역 또는 범위에서 빈번하게 사용되는 경향을 말한다. 이를 통해 data access에 필요한 시간이 줄어들어 performance을 향상시킬 수 있다.

  sequential write operation은 locality를 높여주는 작업으로 본다. contiguous blocks에 대한 write operation을 수행할 때 disk head가 이동하지 않아도 되기 때문이다.

  random write operation은 locality가 낮은 작업으로 간주된다. random block에 대한 write operation을 수행할 때마다 disk head가 이동해야 하기 때문이다.  따라서, random write operation은 sequential write에 비해 latency가 길어지며, disk performance가 저하된다.

  하지만, SSD에서는 HDD랑 다르게 NAND flash memory 기술을 사용하므로 disk head가 없어 disk head에 따른 이동 latency가 발생하지 않는다. 그러나 여전히 random write operation은 disk`s lifetime을 단축시킨다. ㅡ> SSD의 flash memory cell이 한 번 쓰이고 지워지는 데 한계가 있기 때문이다.

#

 

# in place 

  "in palce"란, 데이터를 직접 기존 위치에 덮어쓰는 것을 말한다. 하지만 NAND flash는 data를 이전에 쓰여진 data block을 삭제한 후 새로운 block에 쓰는 방식으로 동작하기 때문에, data를 in place로 쓰는 것은 불가능하다.

#

 

# Log

  log는 컴퓨터에서 발생한 모든 이벤트와 관련된 정보를 기록하는 것을 말한다. 이벤트는 software execution, file 생성, 네트워크 통신 등 다양한 것이 포함될 수 있다. lolg는 debugging, 오류 검색, 보안 검사 등 다양한 목적으로 사용된다.

  database에서는 log를 사용해서 data 변경 작업을 기록한다. 이를 transaction log라고 하고, database의 ACID 특성을 보장하기 위해 사용된다. transaction log는 database의 모든 변경 작업이 기록되며, database system이 중단되거나 장애가 발생하면 log를 사용하여 database를 복원할 수 있다.

  log는 또한 server operating system이나 application에서도 사용된다. 예를 들어, server operating system에서는 event log를 사용해서 server 동작에 대한 정보를 기록한다. application에서는 debugging을 위해 log를 사용할 수 있다. log는 이러한 용도로 사용될 때 system이나 application 동작에 대한 정보를 기록하여, 문제가 발생했을 때 빠른 대응을 할 수 있도록 한다.

#

728x90
Comments