네이티브 명령어 큐잉
Native Command Queuing컴퓨팅에서 NCQ(Native Command Queuing)는 시리얼 ATA 프로토콜의 확장으로 하드 디스크 드라이브가 수신된 읽기 및 쓰기 명령이 실행되는 순서를 내부적으로 최적화할 수 있습니다.이로 인해 불필요한 드라이브 헤드의 이동이 줄어들어 여러 읽기/쓰기 요청이 동시에 발생하는 워크로드의 성능이 향상(및 드라이브의 마모도 약간 감소)될 수 있습니다(대부분 서버형 애플리케이션에서 발생).
역사
Native Command Queuing은 병렬 ATA의 TCQ(Tagged Command Queuing) 버전이 선행되었습니다.TCQ를 통합하려는 ATA의 시도는 ATA 호스트 버스 어댑터가 운영 체제와 상호 작용하기 위해 ISA 버스 장치 프로토콜을 사용해야 한다는 요구로 인해 제약을 받았습니다.결과적으로 CPU 오버헤드가 높고 성능이 거의 향상되지 않았기 때문에 TCQ에 대한 시장 수용성이 떨어졌습니다.
NCQ는 NCQ에서는 각 명령어의 중요도가 동일하다는 점에서 TCQ와 다르지만 NCQ의 호스트버스 어댑터는 명령어시퀀스 중에 CPU가 부여한DMA 파라미터를 사용하여 자체 퍼스트파티 DMA 엔진도 프로그래밍합니다.TCQ는 명령어 쿼리 중에 CPU를 중단하고 ATA 호스트버스 어댑터의 서드파티 DMA 엔진의 변조를 요구합니다.NCQ의 구현은 드라이브가 성능 특성에 대한 보다 정확한 지식을 가지고 있고 회전 위치를 설명할 수 있기 때문에 선호됩니다.NCQ와 TCQ의 최대 큐 길이는 32입니다.[1][2]
NCQ를 활성화하려면 SATA 호스트 버스 어댑터와 하드 드라이브 자체에서 NCQ가 지원되고 활성화되어야 합니다.호스트 버스 [3]어댑터에서 NCQ를 사용하려면 운영 체제에 적절한 드라이버를 로드해야 합니다.
새로운 칩셋의 상당수는 AHCI(Advanced Host Controller Interface)를 지원하며 운영체계가 이를 보편적으로 제어하고 NCQ를 활성화할 수 있습니다.DragonFly BSD는 2009년 [4][5]2.3부터 AHCI with NCQ를 지원하고 있습니다.새로운[which?] 미드레인지 Linux 커널은 AHCI를 네이티브로 지원하며 FreeB도 지원합니다.SD는 버전 8.0 이후 AHCI를 완전히 지원합니다.Windows Vista 및 Windows 7 에서는 AHCI도 네이티브로 서포트하고 있습니다만, 초기 인스톨시에 컨트롤러의 서포트가 없는 경우는, 레지스트리 편집에 의해서(msahci 서비스를 개입시켜) AHCI 서포트를 수동으로 유효하게 할 필요가 있습니다.Windows 7의 AHCI는 NCQ뿐만 아니라 SSD 드라이브(펌웨어 지원)에서도 TRIM을 지원합니다.Windows XP 등의 오래된 운영 체제에서는 AHCI가 호스트 버스 어댑터에 있는 경우에도 벤더 고유의 드라이버(RAID 또는 SCSI 컨트롤러 설치와 유사)를 설치해야 합니다.이 때문에 대부분의 컨트롤러가 포트를 동작시킬 수 없기 때문에 초기 셋업이 더 지루해지고 기존 설치의 변환이 상대적으로 어려워집니다.ixed AHCI –SATA/IDE/레거시 모드
하드 디스크 드라이브
성능
![]() |
2004년 1세대 NCQ 드라이브(Seagate 7200.7 NCQ)를 사용한 테스트에서는 NCQ가 IOMeter 성능을 향상시킨 반면 데스크톱 애플리케이션 성능은 [6]저하된 것으로 나타났습니다.2010년의 한 리뷰에서는 일련의 Windows 멀티태스킹 [7]테스트에서 NCQ가 유효하게 되어 있는 경우, 약 9%(평균)의 개선 효과를 볼 수 있었습니다.
NCQ는 운영 체제의 I/O 스케줄러를 부정적으로 간섭하여 성능을 [8]저하시킬 수 있습니다.이것은 RAID-5를 [9]탑재한 Linux에서 실제로 관찰되고 있습니다.호스트가 I/O의 기한을 지정하는 메커니즘은 NCQ에는 없습니다. 예를 들어 요청을 무시하여 다른 요청을 무시할 수 있는 횟수입니다.이론적으로, 대기 중인 요청은 드라이브가 I/O [8]압력 하에서 다른(아마도 새로운) 요청을 처리하는 동안 임의 시간만큼 지연될 수 있습니다.NCQ 디스패치 순서를 위해 드라이브의 펌웨어 내부에서 사용되는 알고리즘은 일반적으로 공개되지 않기 때문에 하드웨어/펌웨어 성능에 대한 또 다른 수준의 불확실성이 발생합니다.2008년 경 Google의 테스트에서는 NCQ가 I/O를 최대 1~2초간 지연시킬 수 있는 것으로 나타났습니다.제안되는 회피책은 운영체제가 지연이 적은 애플리케이션을 [10]적시에 만족시키기 위해 NCQ 큐를 더 빨리 인위적으로 고갈시키는 것입니다.
WD Raptor circa 2007과 같은 일부 드라이브의 펌웨어에서는 NCQ를 활성화하면 읽기-어헤드 기능이 비활성화되어 순차 성능이 [11]느려집니다.
안전성(FUA)
NCQ의 잘 알려지지 않은 기능 중 하나는 이전 ATA TCQ와 달리 호스트가 데이터가 디스크 플래터에 도달했을 때 또는 디스크 버퍼(온보드 캐시)에 도달했을 때 알림을 받을지 지정할 수 있다는 것입니다.이 기능을 사용하면 fsync 등의 시스템 호출과 함께 디스크의 온보드 캐시를 사용할 때 데이터의 [12]일관성을 보장할 수 있습니다.SCSI에서 빌린 관련 쓰기 플래그를 Force Unit Access(FUA;[13][14][15] 강제 유닛 액세스)라고 합니다.
솔리드 스테이트 드라이브
또한 NCQ는 호스트에서 대기 시간이 발생하는 새로운 솔리드 스테이트 드라이브에도 사용됩니다.예를 들어 인텔의 X25-E Extreme 솔리드 스테이트 드라이브는 NCQ를 사용하여 호스트 시스템이 CPU [16]작업을 처리하는 동안 드라이브가 처리할 명령을 가지고 있는지 확인합니다.
또한 NCQ를 통해 SSD 컨트롤러는 장치의 내부 조직이 이러한 처리를 가능하게 하는 동시에(또는 파이프라인과 같이 일부 동시에) 명령을 완료할 수 있습니다.
NVM Express(NVMe) 표준은 SSD에 최적화된 [17]형태로 명령 큐잉도 지원합니다. NVMe는 단일 컨트롤러 및 디바이스에 대해 여러 개의 큐를 허용하여 각 큐에 대해 더 높은 깊이를 동시에 허용하므로 기본 SSD 하드웨어의 [18]작동 방식과 더 밀접하게 일치합니다.
「 」를 참조해 주세요.
레퍼런스
- ^ 인텔과 Seagate의 NCQ에 관한 PDF 화이트 페이퍼
- ^ ATA-7 표준의 최종 초안 제1권
- ^ "SATA II 네이티브 커맨드 큐잉 개요", 인텔 화이트 페이퍼, 2003년 4월
- ^ Matthew Dillon (2009-06-04). ""Re: DragonFly-2.3.1.165.g25822 master sys/dev/disk/ahci Makefile TODO ahci.c ahci.h ahci_attach.c ahci_cam.c ahci_dragonfly.c ahci_dragonfly.h atascsi.h"".
- ^ Matthew Dillon (2009). "ahci(4) — Advanced Host Controller Interface for Serial ATA". BSD Cross Reference. DragonFly BSD.
- "ahci - Advanced Host Controller Interface for Serial ATA". DragonFly On-Line Manual Pages.
- ^ "Seagate's Barracuda 7200.7 NCQ hard drive - The Tech Report - Page 13". The Tech Report. 17 December 2004. Retrieved 2014-01-11.
- ^ "Multitasking with Native Command Queuing - The Tech Report - Page 5". The Tech Report. 3 August 2005. Retrieved 2014-01-11.
- ^ a b Yu, Y. J.; Shin, D. I.; Eom, H.; Yeom, H. Y. (2010). "NCQ vs. I/O scheduler". ACM Transactions on Storage. 6: 1–37. doi:10.1145/1714454.1714456. S2CID 14414608. [1]
- ^ "hard drive - Poor Linux software RAID 5 performance with NCQ". Server Fault. Retrieved 2014-01-11.
- ^ Gwendal Gridnou, NCQ Emulation, FLS'08 토크 요약(109페이지) 슬라이드
- ^ "Mark Lord: Re: Lower HD transfer rate with NCQ enabled?". LKML. 2007-04-03. Retrieved 2014-01-11.
- ^ Marshall Kirk McKusick. "Disks from the Perspective of a File System - ACM Queue". Queue.acm.org. Retrieved 2014-01-11.
- ^ Gregory Smith (2010). PostgreSQL 9.0: High Performance. Packt Publishing Ltd. p. 78. ISBN 978-1-84951-031-8.
- ^ http://www.seagate.com/docs/pdf/whitepaper/D2c_tech_paper_intc-stx_sata_ncq.pdf[베어 URL PDF]
- ^ Jonathan Corbet (2010-08-18). "The end of block barriers". LWN.net. Retrieved 2015-06-27.
- ^ Gasior, Geoff (November 23, 2008). "Intel's X25-E Extreme solid-state drive - Now with single-level cell flash memory". Tech Report.
- ^ Dave Landsman (2013-08-09). "AHCI and NVMe as Interfaces for SATA Express Devices – Overview" (PDF). SATA-IO. Retrieved 2013-10-02.
- ^ "NVM Express Overview". nvmexpress.org. Retrieved 2014-11-26.