맨위로가기

NCQ

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

NCQ(Native Command Queuing)는 하드 디스크 드라이브의 성능을 향상시키는 기술이다. PATA 및 SCSI의 TCQ(Tagged Command Queuing)에서 파생되었으며, 최대 32개의 명령을 큐에 저장하여 헤드 움직임을 최적화한다. NCQ는 SATA 호스트 버스 어댑터와 하드 드라이브에서 지원되어야 하며, 운영 체제에서 적절한 드라이버가 로드되어야 한다. AHCI를 지원하는 최신 칩셋을 통해 운영 체제가 NCQ를 제어할 수 있으며, Windows, Linux, FreeBSD 등 다양한 운영 체제에서 지원된다. NCQ는 I/O 부하가 많은 환경에서 성능을 향상시키지만, 낮은 I/O 부하에서는 성능 저하를 유발할 수 있으며, I/O 스케줄러를 방해하여 성능을 저하시키는 경우도 있다. SSD에서도 사용되며, NVMe 표준은 SSD에 최적화된 명령 대기열을 지원한다.

2. 역사

NCQ는 PATASCSI에서 사용되던 TCQ에서 유래한다.[1][2]

2. 1. PATA TCQ의 한계

병렬 ATA의 태그 명령 큐잉(TCQ)은 ATA 호스트 버스 어댑터가 운영 체제와 상호 작용하기 위해 ISA 버스 장치 프로토콜을 사용해야 한다는 요구 사항 때문에 제약을 받았다. 그 결과 CPU 오버헤드가 높아지고 성능 향상이 미미하여 ATA TCQ는 시장에서 성공하지 못했다.[1][2]

2. 2. NCQ의 등장

병렬 ATA의 태그 명령 큐잉(TCQ)보다 네이티브 명령 큐잉(NCQ)이 먼저 나왔다. ATA가 TCQ를 통합하려는 시도는 ATA 호스트 버스 어댑터가 운영 체제와 상호 작용하기 위해 ISA 버스 장치 프로토콜을 사용해야 한다는 요구 사항 때문에 제약을 받았다. 그 결과, 높은 CPU 오버헤드와 미미한 성능 향상으로 인해 ATA TCQ는 시장에서 받아들여지지 않았다.

NCQ는 TCQ와 달리 각 명령의 중요도가 동일하지만, NCQ의 호스트 버스 어댑터는 CPU가 제공한 자체 DMA 엔진을 명령 시퀀스 동안 CPU가 제공한 DMA 매개변수로 프로그래밍한다. 반면 TCQ는 명령 쿼리 동안 CPU를 인터럽트하고 ATA 호스트 버스 어댑터의 타사 DMA 엔진을 조정해야 한다. NCQ의 구현이 선호되는 이유는 드라이브가 성능 특성에 대한 보다 정확한 지식을 갖고 회전 위치를 고려할 수 있기 때문이다. NCQ와 TCQ는 모두 최대 32개의 대기 명령 큐 길이를 갖는다.[1][2] ATA TCQ는 거의 사용되지 않기 때문에 병렬 ATA(및 일부 칩셋의 IDE 모드)는 일반적으로 포트당 하나의 대기 명령만 지원한다.

NCQ를 사용하려면 SATA 호스트 버스 어댑터와 하드 드라이브 자체에서 지원하고 활성화해야 한다. 호스트 버스 어댑터에서 NCQ를 활성화하려면 적절한 드라이버가 운영 체제에 로드되어야 한다.[3]

2. 3. 운영체제 지원

많은 최신 칩셋은 고급 호스트 컨트롤러 인터페이스(AHCI)를 지원하여 운영 체제가 이를 보편적으로 제어하고 NCQ를 활성화할 수 있다.[3] DragonFly BSD는 2009년 2.3부터 NCQ를 사용하여 AHCI를 지원했고,[4][5] 리눅스 커널은 버전 2.6.19부터, FreeBSD는 버전 8.0부터 AHCI를 기본적으로 지원한다. Windows Vista 및 Windows 7도 기본적으로 AHCI를 지원하지만, 컨트롤러 지원이 초기 설치 중에 없었던 경우 레지스트리 편집을 통해 AHCI 지원(msahci 서비스를 통해)을 수동으로 활성화해야 한다. Windows 7의 AHCI는 NCQ뿐만 아니라 SSD 드라이브에서 TRIM 지원도 활성화한다(해당 펌웨어 포함). Windows XP와 같은 이전 운영 체제는 AHCI가 호스트 버스 어댑터에 존재하더라도 벤더별 드라이버를 설치해야 한다(RAID 또는 SCSI 컨트롤러를 설치하는 것과 유사). 이로 인해 초기 설정이 더 번거로워지고, 대부분의 컨트롤러가 포트를 혼합 AHCI-SATA/IDE/레거시 모드로 작동할 수 없기 때문에 기존 설치를 변환하기가 상대적으로 어렵다.

3. 원리

NCQ는 I/O 요청을 큐에 보관하고, 전체 헤드의 움직임을 최소화하는 최적의 경로로 재배열하여 실행한다. 최대 큐 길이는 32개 명령어이다(실제로 이용되는 것은 31개).[19][20]

4. 효과

NCQ는 헤드의 움직임을 줄여 물리적 마모를 감소시키고 내구성을 향상시켜 MTBF(평균 고장 간격)를 늘리는 효과가 있다.[21][22]

4. 1. 성능

NCQ는 많은 I/O 수의 부하에서는 성능에 상당히 긍정적인 효과가 있다.[21][22] 그러나 순수 대역폭에 손해를 보며 개인용 컴퓨터 수준의 낮은 I/O 수의 부하에서는 성능이 떨어지는 경우가 많아서 기본적으로 사용하지 않는 경우가 많다.

2004년 초창기 NCQ 드라이브(Seagate 7200.7 NCQ)를 대상으로 한 테스트 결과, NCQ가 IOMeter 성능은 향상시켰지만, 데스크톱 애플리케이션 성능은 감소하는 것으로 나타났다.[6] 2010년의 한 리뷰에서는 일련의 윈도우 멀티태스킹 테스트에서 NCQ를 활성화했을 때 평균 9% 정도의 성능 향상이 있었다.[7]

NCQ는 운영 체제의 I/O 스케줄러를 부정적으로 방해하여 성능을 저하시킬 수 있다.[8] 이는 리눅스의 RAID-5 환경에서 실제로 관찰되었다.[9] NCQ에는 호스트가 I/O에 대한 마감 시간을 지정할 수 있는 메커니즘이 없으며, 다른 요청을 우선하기 위해 요청을 무시할 수 있는 횟수도 지정할 수 없다. 이론적으로, 대기열에 있는 요청은 I/O 부하가 걸린 상태에서 다른 (아마도 새로운) 요청을 처리하는 동안 드라이브에 의해 임의의 시간 동안 지연될 수 있다.[8] NCQ 디스패치 순서를 위해 드라이브 펌웨어 내부에서 사용되는 알고리즘은 일반적으로 공개되지 않으므로, 이는 하드웨어/펌웨어 성능에 대한 또 다른 수준의 불확실성을 도입한다. 2008년경 구글에서 실시한 테스트에 따르면 NCQ는 I/O를 최대 1~2초 동안 지연시킬 수 있다. 제안된 해결 방법은 운영 체제가 낮은 대기 시간 애플리케이션을 적시에 충족시키기 위해 NCQ 큐를 인위적으로 더 빨리 기아 상태로 만드는 것이다.[10]

2007년경의 웨스턴 디지털 랩터(WD Raptor)와 같은 일부 드라이브 펌웨어에서는 NCQ가 활성화되면 리드-어헤드가 비활성화되어 순차적 성능이 저하된다.[11]

SATA 솔리드 스테이트 드라이브는 병렬 워크로드를 위해 여러 명령을 큐에 넣을 수 있다는 이점을 크게 누린다. PCIe 기반 NVMe SSD의 경우, 큐 깊이가 최대 65,535개의 큐와 각 큐당 최대 65,535개의 명령을 지원하도록 더욱 증가했다.

4. 2. I/O 스케줄러와의 간섭

NCQ는 운영 체제의 I/O 스케줄러를 방해하여 성능을 저하시킬 수 있다.[8] 이는 리눅스의 RAID-5 환경에서 실제로 관찰되었다.[9] NCQ에는 호스트가 I/O에 대한 마감 시간을 지정하거나, 다른 요청을 우선하기 위해 요청을 무시할 수 있는 횟수를 지정하는 메커니즘이 없다. 이론적으로, 대기열에 있는 요청은 I/O 부하가 걸린 상태에서 다른 (아마도 새로운) 요청을 처리하는 동안 드라이브에 의해 임의의 시간 동안 지연될 수 있다.[8] NCQ 디스패치 순서를 위해 드라이브 펌웨어 내부에서 사용되는 알고리즘은 일반적으로 공개되지 않으므로, 이는 하드웨어/펌웨어 성능에 대한 또 다른 수준의 불확실성을 도입한다. 2008년경 구글에서 실시한 테스트에 따르면 NCQ는 I/O를 최대 1~2초 동안 지연시킬 수 있다. 제안된 해결 방법은 운영 체제가 낮은 대기 시간 애플리케이션을 적시에 충족시키기 위해 NCQ 큐를 인위적으로 더 빨리 기아 상태로 만드는 것이다.[10]

4. 3. 안전성 (FUA)

NCQ의 덜 알려진 기능 중 하나는 ATA TCQ의 전신과 달리, 호스트가 데이터가 디스크의 플래터에 도달했을 때 알림을 받을지, 아니면 디스크의 버퍼(온보드 캐시)에 도달했을 때 알림을 받을지를 지정할 수 있다는 것이다. 올바른 하드웨어 구현을 가정하면, 이 기능을 통해 디스크의 온보드 캐시가 fsync와 같은 시스템 호출과 함께 사용될 때 데이터 일관성을 보장할 수 있다.[12] SCSI에서 차용한 관련 쓰기 플래그는 강제 유닛 접근 (FUA)이라고 한다.[13][14][15]

5. 솔리드 스테이트 드라이브 (SSD)

NCQ는 솔리드 스테이트 드라이브(SSD)에서도 사용된다. 인텔 X25-E 익스트림 SSD는 NCQ를 통해 호스트 시스템이 CPU 작업을 처리하는 동안 드라이브가 명령을 처리하도록 돕는다.[16] SSD 컨트롤러는 장치 내부 구조에 따라 명령을 동시에 또는 부분적으로 완료할 수 있다.

5. 1. NVMe

NVM 익스프레스(NVMe) 표준은 SSD에 최적화된 형태의 명령 대기열을 지원한다.[17] NVMe는 단일 컨트롤러 및 장치에 대해 여러 개의 대기열을 허용하며, 각 대기열에 대해 훨씬 더 높은 수준의 깊이를 허용하여 기본 SSD 하드웨어 작동 방식에 더 가깝게 일치시킨다.[18]

참조

[1] PDF PDF white paper on NCQ from Intel and Seagate https://web.archive.[...]
[2] 웹사이트 Volume 1 of the final draft of the ATA-7 standard http://www.t13.org/D[...] 2007-01-02
[3] 간행물 SATA II Native Command Queuing Overview http://download.inte[...] Intel Whitepaper 2003-04
[4] 웹사이트 "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" http://www.dragonfly[...] 2009-06-04
[5] 웹사이트 ahci(4) — Advanced Host Controller Interface for Serial ATA http://bxr.su/d/shar[...] DragonFly BSD 2009
[6] 웹사이트 Seagate's Barracuda 7200.7 NCQ hard drive - The Tech Report - Page 13 http://techreport.co[...] The Tech Report 2014-01-11
[7] 웹사이트 Multitasking with Native Command Queuing - The Tech Report - Page 5 http://techreport.co[...] The Tech Report 2014-01-11
[8] 학술지 NCQ vs. I/O scheduler http://www.cs.albany[...]
[9] 웹사이트 hard drive - Poor Linux software RAID 5 performance with NCQ http://serverfault.c[...] Server Fault 2014-01-11
[10] 기타 NCQ Emulation https://www.usenix.o[...] FLS'08
[11] 웹사이트 Mark Lord: Re: Lower HD transfer rate with NCQ enabled? https://lkml.org/lkm[...] LKML 2014-01-11
[12] 웹사이트 Disks from the Perspective of a File System - ACM Queue http://queue.acm.org[...] Queue.acm.org 2014-01-11
[13] 서적 PostgreSQL 9.0: High Performance https://archive.org/[...] Packt Publishing Ltd
[14] Bare URL http://www.seagate.c[...] 2022-03
[15] 웹사이트 The end of block barriers https://lwn.net/Arti[...] LWN.net 2015-06-27
[16] 웹사이트 Intel's X25-E Extreme solid-state drive - Now with single-level cell flash memory http://techreport.co[...] Tech Report 2008-11-23
[17] 웹사이트 AHCI and NVMe as Interfaces for SATA Express Devices – Overview https://www.sata-io.[...] SATA-IO 2013-10-02
[18] 웹사이트 NVM Express Overview http://www.nvmexpres[...] 2014-11-26
[19] 웹인용 PDF white paper on NCQ from Intel and Seagate http://www.seagate.c[...] 2010-05-18
[20] 웹인용 Volume 1 of the final draft of the ATA-7 standard http://www.t13.org/D[...] 2010-05-18
[21] 웹인용 AHCI vs IDE – Benchmark & Advantage http://expertester.w[...] 2010-05-14
[22] 웹인용 Mission "Defragmentation". Part 2: PerfectDisk http://www.xbitlabs.[...] 2010-05-14



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com