[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

KR20150037002A - Fpga 기반의 비실장형 스토리지 테스트 장치 - Google Patents

Fpga 기반의 비실장형 스토리지 테스트 장치 Download PDF

Info

Publication number
KR20150037002A
KR20150037002A KR20130116139A KR20130116139A KR20150037002A KR 20150037002 A KR20150037002 A KR 20150037002A KR 20130116139 A KR20130116139 A KR 20130116139A KR 20130116139 A KR20130116139 A KR 20130116139A KR 20150037002 A KR20150037002 A KR 20150037002A
Authority
KR
South Korea
Prior art keywords
unit
test
data
pcie
device driver
Prior art date
Application number
KR20130116139A
Other languages
English (en)
Other versions
KR101561854B1 (ko
Inventor
한영면
Original Assignee
주식회사 유니테스트
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 유니테스트 filed Critical 주식회사 유니테스트
Priority to KR1020130116139A priority Critical patent/KR101561854B1/ko
Priority to CN201410340524.5A priority patent/CN104516843B/zh
Publication of KR20150037002A publication Critical patent/KR20150037002A/ko
Application granted granted Critical
Publication of KR101561854B1 publication Critical patent/KR101561854B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/56External testing equipment for static stores, e.g. automatic test equipment [ATE]; Interfaces therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2205Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0024Peripheral component interconnect [PCI]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

본 발명은 본 발명은 FPGA 기반의 비실장형 스토리지 테스트 장치에 관한 것으로서, FPGA 내부에 구성되는 마이크로프로세서(EPU)로서, 루트 콤플렉스(Root Complex: RC) 이하 PCIe 버스 트리(bus tree)의 장치에 대한 열거(Enumeration) 및 구성(Configuration)을 수행하고, 테스트 하기 위한 시나리오(Scenario)를 작성하여 디바이스 드라이버부(Device Driver)를 설정하고, 테스트를 수행하도록 하는 프로세서부; 상기 프로세서부가 작성한 테스트 시나리오를 바탕으로, 스토리지 장치에 사용되는 ATA(Advanced Technology Attachment) 명령을 생성하는 블록으로서, 스토리지 장치를 관리하는 고급 호스트 컨트롤러 인터페이스(Advanced Host Controller Interface: AHCI)를 포함하는 HBA(Host Bridge Adapter)와 통신하는 디바이스 드라이버부; 테스트에 이용될 패턴 데이터를 생성하고, 시스템 메모리로부터 사용자가 저장한 데이터에 액세스하여 테스트를 진행하는 데이터 엔진부; 상기 프로세서부와 데이터 엔진부이 메모리부에 액세스하여 테스트를 진행할 수 있도록 진행에 필요한 데이터를 수신하고, 테스트 결과를 저장하는 시스템 메모리 인터페이스부; 테스트 불량 발생 시, PCIe 트랜잭션 레이어의 패킷(Packet)을 모니터링하여 저장하는 모니터링부; 상기 디바이스 드라이버부가 시나리오를 디코드하고 PCIe Bus를 통해 명령어를 HBA에 전달하게 되면, 모든 데이터의 흐름은 HBA 마스터(Master)가 되는 DMA 동작을 수행하며, 디바이스 드라이버부가 포함되어 있는 루트 콤플렉스(Root Complex)로 메모리 읽음 요청(Memory Read Request)을 보내는 DMA 드라이버/어드레스 트랜슬레이션부; 상기 DMA 드라이버/어드레스 트랜슬레이션부의 판독결과, Bus ConRC로 올라오는 TLP가 메시지인 경우, 데이터 엔진부와 디바이스 드라이버부에 전달하는 메시지 입출력부; PCI Express 로직의 SW IP인 PCIe IP부; 상기 PCIe IP부와 연결되어, DUT부를 구성하는 스위치부; 피시험장치로서, HBA가 포함되어 PCIe에 직접 인터페이스 하는 스토리지인 DUT부; 및 테스트에 사용될 데이터를 저장하고, 테스크 간 생성되는 기록을 저장하는 메모리부; 를 포함한다.

Description

FPGA 기반의 비실장형 스토리지 테스트 장치{NON-MOUNTED STORAGE TEST DEVICE BASED ON FPGA}
본 발명은 PCI Express(PCIe)를 기반으로 하는 SSD TEST 장비를 운용하는 드라이버 매커니즘 관한 것으로, 더욱 상세하게는 PC 기반이 아닌, FPGA를 기반으로 하는 비실장형 테스트 장치에 관한 것이다.
현재 고속 스토리지(High Speed Storage)로 솔리드 스테이트 드라이브(Solid State Drive; SSD)가 각광 받고 있다. 그 중에서 PCI express 기반의 SSD는 SAS SATA에 비해 대량의 트래픽처리 능력을 가지고 있기 때문에, 데이터 센터와 같은 기업용 서버뿐만 아니라, 개인용 SSD 시장으로 확대되고 있다.
한편, 스토리지를 테스트 하는 장치와 관련해서는, 한국공개특허 10-2010-0114697호(이하, '선행문헌') 외에 다수 출원 및 공개되어 있다.
상기한 선행문헌은, 스토리지(storage)와의 인터페이스를 유지하는 스토리지 인터페이스부; 사용자로부터 상기 스토리지의 테스트를 위한 테스트 조건을 입력 받는 사용자 인터페이스부; 상기 사용자로부터 입력 받은 상기 테스트 조건에 대응하는 상기 스토리지의 테스트를 위한 테스트 패턴(test pattern)을 생성하는 테스트 패턴 생성부; 및 상기 테스트 패턴을 통해 상기 스토리지의 테스트를 제어하는 테스트 제어부; 를 포함한다.
그러나 선행문헌을 포함한 종래의 테스트 장치는, 플래시 어레이의 불량(fail) 로직 블록 어드레스(Logic Block Address: LBA)를 검출하기 위해, SSD Device에 특정 패턴의 데이터 쓰기를 수행하고, 다시 읽어들여, 데이터가 유효한지 비교를 하게 된다. 이러한 장치에는 패턴 데이터 생성기와 패턴 데이터 생성기로부터 생성된 데이터를 버퍼(기대 값버퍼, expected data buffer)에 저장하게된다. 이 저장된 데이터는 SSD Device로부터 다시 데이터를 읽어, 이 데이터 버퍼에 내용과 비교하여, 불량(Fail) 여부를 판단하게 된다. 이러한 방식은 가용 버퍼 용량제한의 문제점을 갖게 된다.
현재 SSD의 용량은 수백기가 바이트에 이르고 있다. 이러한 장치를 테스트 하기 위해서, 기대 값 버퍼의 크기를 늘리는 것은 여러가지 제약사항을 발생 시킨다. 예컨데 너무 작게 잡는다면, 작은 데이터 블록으로 dataRead/Write를 수행하게 되어, 전체 테스트 시간이 늘어나게 된다. 너무 크게 잡는다면, 성능은 증가하지만, 시스템 관점에서 수용할 수 없는 메모리의 양을 요구하게 된다.
또한, 실장 기반의 테스트 환경의 경우, 테스트 디바이스 드라이버의 명령 처리에 실장 기반의 테스트 환경에 비해 응답시간과 테스트 시간이 길어지는 문제점이 있었다.
본 발명은 PCI-Express(PCIe)를 기반으로 하는 SSD TEST 장비를 운용하는 드라이버 매커니즘 관한 것으로, 더욱 상세하게는 PC 기반이 아닌, FPGA를 기반으로 하는 비실장형 스토리지 테스터 장비 하드웨어 드라이버 매커니즘에 관한 것이다.
구체적으로는, 실장 시스템과 달리, 모든 시스템의 자원을 SSD 운용목적으로 하드웨어로 구성함으로써, 실장 기반의 테스트 환경에 비해, 테스트 디바이스 드라이버의 명령 처리에 있어, 더 빠른 응답시간과 빠른 테스트 시간을 확보할 수 있으며, 동일 시간 기준으로 대량의 SSD를 테스트할 수 있는 장치를 제공함에 그 목적이 있다.
이러한 기술적 과제를 달성하기 위한 본 발명은 FPGA 기반의 비실장형 스토리지 테스트 장치에 관한 것으로서, FPGA 내부에 구성되는 마이크로프로세서(EPU)로서, 루트 콤플렉스(Root Complex: RC) 이하 PCIe 버스 트리(bus tree)의 장치에 대한 열거(Enumeration) 및 구성(Configuration)을 수행하고, 테스트 하기 위한 시나리오(Scenario)를 작성하여 디바이스 드라이버부(Device Driver)를 설정하고, 테스트를 수행하도록 하는 프로세서부; 상기 프로세서부가 작성한 테스트 시나리오를 바탕으로, 스토리지 장치에 사용되는 ATA(Advanced Technology Attachment) 명령을 생성하는 블록으로서, 스토리지 장치를 관리하는 고급 호스트 컨트롤러 인터페이스(Advanced Host Controller Interface: AHCI)를 포함하는 HBA(Host Bridge Adapter)와 통신하는 디바이스 드라이버부; 테스트에 이용될 패턴 데이터를 생성하고, 시스템 메모리로부터 사용자가 저장한 데이터에 액세스하여 테스트를 진행하는 데이터 엔진부; 상기 프로세서부와 데이터 엔진부이 메모리부에 액세스하여 테스트를 진행할 수 있도록 진행에 필요한 데이터를 수신하고, 테스트 결과를 저장하는 시스템 메모리 인터페이스부; 테스트 불량 발생 시, PCIe 트랜잭션 레이어의 패킷(Packet)을 모니터링하여 저장하는 모니터링부; 상기 디바이스 드라이버부가 시나리오를 디코드하고 PCIe Bus를 통해 명령어를 HBA에 전달하게 되면, 모든 데이터의 흐름은 HBA 마스터(Master)가 되는 DMA 동작을 수행하며, 디바이스 드라이버부가 포함되어 있는 루트 콤플렉스(Root Complex)로 메모리 읽음 요청(Memory Read Request)을 보내는 DMA 드라이버/어드레스 트랜슬레이션부; 상기 DMA 드라이버/어드레스 트랜슬레이션부의 판독결과, Bus ConRC로 올라오는 TLP가 메시지인 경우, 데이터 엔진부와 디바이스 드라이버부에 전달하는 메시지 입출력부; PCI Express 로직의 SW IP인 PCIe IP부; 상기 PCIe IP부와 연결되어, DUT부를 구성하는 스위치부; 피시험장치로서, HBA가 포함되어 PCIe에 직접 인터페이스 하는 스토리지인 DUT부; 및 테스트에 사용될 데이터를 저장하고, 테스크 간 생성되는 기록을 저장하는 메모리부; 를 포함한다.
또한 상기 프로세서부는, 테스트가 종료되는 경우, 에러 여부 및 성공에 대해 결과를 상기 디바이스 드라이버부로부터 에러 여부 및 성공에 대해 결과를 수신하며, 오류가 있는 경우, PCIe의 TLP와 디바이스 오류 정보를 액세스(access)하는 것을 특징으로 한다.
또한 상기 디바이스 드라이버부의 명령에는, 읽고/쓰기(Read/Write) 위한 데이터 버퍼(Data Buffer)의 기준 주소(base address)와 크기(size), 스토리지 장치(SSD)의 로직 블록 어드레스(Logic Block Address: LBA) 정보가 포함되어 있는 것을 특징으로 한다.
또한 상기 시나리오에 작성하는 정보는, 전체 테스트 시나리오가 수행되는 시간, LBA MODE(순차모드 또는 무작위 액세스모드), 데이터 패턴(Data pattern), Command Queued Depth를 포함하는 테스트 순서에 필요한 정보와, 고급 호스트 컨트롤러 인터페이스(AHCI) 기반의 PCIe 스토리지(SSD)를 위한 ATA 명령과, SCSI(Small Computer System Interface)를 기반으로 하는 PCIe 스토리지(SSD)를 위한 명령 작성에 필요한 정보 중, 적어도 어느 하나를 포함하는 것을 특징으로 한다.
또한 상기 데이터 엔진부는, SSD에 쓰기(Write)에 필요한 데이터를 생성하고, 읽기 및 비교(Read & compare) 동작 시, 기대 값(Expected Data)을 생성하는 패턴 데이터 발생모듈; 읽기 및 비교(Read & compare) 동작 시, 패턴 데이터 발생모듈을 통해 생성된 기대 값(Expected data)과, HBA Mwr(Memory Wite Request)의 데이터인 SSD에서 읽은 데이터를 비교하여, 해당 LBA의 데이터가 동일한지 여부를 판단하는 비교모듈; 상기 비교부의 판단결과, 동일하지 않을 경우, 불량(Fail) 정보를 저장하는 불량 기록 저장모듈; 및 상기 시스템 메모리 인터페이스부로부터 사용자가 저장한 데이터를 입력받는 시스템 메모리 입력모듈; 을 포함하는 것을 특징으로 한다.
또한 상기 DMA 드라이버/어드레스 트랜슬레이션부는, HBA EndPoint(EP)가 루트 콤플렉스(Root Complex)로 전송한 요청(Request)에 대한 정보를 수신하여, 상기 디바이스 드라이버부와 데이터 엔진부에 전달하는 것을 특징으로 한다.
또한 상기 DMA 드라이버/어드레스 트랜슬레이션부는, 상기 디바이스 드라이버부가 HBA의 레지스터(Register)에 액세스(access)하기 위한 Mwr(Memory Wite Request) 패킷 전달 플래그를 전달하면, 이 플래그를 디코딩해서 루트 콤플렉스(Root Complex)가 HBA의 레지스터(Register)에 쓰기(Write)를 완료하도록 하며, 상기 HBA가 루트 콤플렉스(Root Complex)에 명령 헤더(Command Header) 정보를 요청하기 위해 Mrd(Memory Read Request) 패킷을 보내면, 이 패킷을 상기 디바이스 드라이버부에 연결하여, 해당 정보를 디바이스 드라이버부에서 Cpld(Completion with Data) 패킷으로 보낼 수 있도록 패킷(patcket)을 판독하고 연결하는 것을 특징으로 한다.
그리고 상기 스위치부는, 루트 콤플렉스(Root Complex)의 대역폭(Bandwidth) 내에서 구성하는 경우, 다수의 스위치를 이용하여 파라(PARA)수를 늘리는 것을 특징으로 한다.
상기와 같은 본 발명에 따르면, 실장 시스템과 달리, 모든 시스템의 자원을 SSD 운용목적으로 하드웨어로 구성함으로써, 실장 기반의 테스트 환경에 비해, 테스트 디바이스 드라이버의 명령 처리에 있어, 더 빠른 응답시간과 빠른 테스트 시간을 확보할 수 있으며, 동일 시간 기준으로 대량의 SSD를 테스트할 수 있는 효과가 있다.
도 1 은 본 발명에 따른 FPGA 기반의 비실장형 스토리지 테스트 장치를 개념적으로 도시한 전체 구성도.
도 2 는 본 발명에 따른 프로세서부가 작성하는 시나리오 정보를 보이는 일예시도.
도 3 은 본 발명에 따른 프로세서부에서 트랜잭션 레이어의 패킷 로그(Packet log)를 액세스한 로그를 보이는 일예시도.
도 4 는 본 발명에 따른 스위치를 이용하여 DUT부와 연결된 모습을 보이는 일예시도.
도 5 는 본 발명에 따른 다수의 스위치를 이용하여 파라를 늘리는 모습을 보이는 일예시도.
본 발명의 구체적 특징 및 이점들은 첨부도면에 의거한 다음의 상세한 설명으로 더욱 명백해질 것이다. 이에 앞서 본 발명에 관련된 공지 기능 및 그 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는, 그 구체적인 설명을 생략하였음에 유의해야 할 것이다.
이하, 첨부된 도면을 참조하여 본 발명을 상세하게 설명한다.
본 발명에 따른 FPGA 기반의 비실장형 스토리지 테스트 장치에 관하여 도 1 내지 도 5 를 참조하여 설명하면 다음과 같다.
도 1 은 본 발명에 따른 FPGA 기반의 비실장형 스토리지 테스트 장치를 개념적으로 도시한 전체 구성도로서, 도시된 바와 같이 프로세서부(100), 디바이스 드라이버부(200), 데이터 엔진부(300), 시스템 메모리 인터페이스부(400), 모니터링부(500), DMA 드라이버/어드레스 트랜슬레이션부(600), 메시지 입출력부(700), PCIe IP부(800), 스위치부(900), DUT부(1000) 및 메모리부(1100)를 포함하여 이루어진다.
프로세서부(100)는 FPGA 내부에 구성되는 마이크로프로세서(Embedded Processor Unit: EPU)로서, 루트 콤플렉스(Root Complex: RC) 이하 PCIe 버스 트리(bus tree)의 장치(device)에 대한 열거(Enumeration) 및 구성(Configuration)을 수행하고, 테스트 하기 위한 시나리오(Scenario)를 작성하여 디바이스 드라이버부(Device Driver)(200)를 설정하고, 테스트를 수행하도록 한다.
테스트가 종료되는 경우, 에러 여부 및 성공에 대해 결과를 디바이스 드라이버부(200)로부터 에러 여부 및 성공에 대해 결과를 수신하며, 오류가 있는 경우, PCIe의 TLP와 디바이스 오류 정보를 액세스(access)할 수 있다.
디바이스 드라이버부(200)는 프로세서부(100)가 작성한 테스트 시나리오를 바탕으로, 스토리지 장치(SSD, Harddisk)에 사용되는 ATA(Advanced Technology Attachment) 명령을 생성하는 블록으로서, 스토리지 장치를 관리하는 고급 호스트 컨트롤러 인터페이스(Advanced Host Controller Interface: AHCI)와 같은 HBA(Host Bridge Adapter)와 통신하게 된다.
이러한 명령에는, 읽고/쓰기(Read/Write) 위한 데이터 버퍼(Data Buffer)의 기준 주소(base address)와 크기(size), 스토리지 장치(SSD)의 로직 블록 어드레스(Logic Block Address: LBA) 정보가 포함되어 있다. 이 정보를 바탕으로 HBA는 스토리지 장치(SSD)에 읽거나 쓰기 위한, 직접 메모리 액세스(Direct Memory Access: DMA) 동작을 수행하게 된다.
도 2 의 (1) 은 프로세서부(100)가 작성하는 시나리오의 정보이며, 하나의 시나리오는 N개의 DW 레지스터(register)로 구성된다. 이러한 시나리오 슬롯이 0~N개가 존재하며, 시작 포인트(Start point)와 스탑 포인트(Stop Point)가 존재한다.
이러한 구성으로 다양한 테스트 시나리오 작성이 가능하다.
시나리오에 작성하는 정보는(도 2 의 (1) 참조) 전체 테스트 시나리오가 수행되는 시간, LBA MODE(순차모드 또는 무작위 액세스모드), 데이터 패턴(Data pattern), Command Queued Depth 등 테스트 순서에 필요한 정보와, 고급 호스트 컨트롤러 인터페이스(AHCI) 기반의 PCIe 스토리지(SSD)를 위한 ATA 명령과, SCSI(Small Computer System Interface)를 기반으로 하는 PCIe 스토리지(SSD)를 위한 명령 작성에 필요한 정보를 저장하게 된다. 테스트가 시작되면, 시작 포인트(Start point)에서 종료 포인트(End Point)까지의 테스트 시나리오가 수행되게 된다.
데이터 엔진부(300)는 테스트에 이용될 패턴 데이터를 생성하고, 시스템 메모리로부터 사용자가 저장한 데이터에 액세스하여 테스트를 진행하는 기능을 수행하는 바, 상기 도 1 에 도시된 바와 같이 패턴 데이터 발생모듈(310), 비교모듈(320), 불량 기록 저장모듈(330) 및 시스템 메모리 입력모듈(340)을 포함한다.
구체적으로, 패턴 데이터 발생모듈(310)은 SSD에 쓰기(Write)에 필요한 데이터를 생성하고, 읽기 및 비교(Read & compare) 동작 시, 기대 값(Expected Data)을 생성한다.
이때, 패턴 데이터 발생모듈(310)은 LBA와 DMA 드라이버/어드레스 트랜슬레이션부(600)로 요청된 메모리 주소를 이용하여 만든 시드(Seed)값으로 무작위 데이터를 생성한다.
더욱 구체적으로, 패턴 데이터 발생모듈(310)은 SSD에 쓰기(Write)에 필요한 데이터를 생성하고, 읽기 및 비교(Read & compare) 동작 시, 기대 값(Expected Data)을 생성한다. 또한, 쓰기(Write) 동작 시에는, DMA 드라이버/어드레스 트랜슬레이션부(600)로 Mrd 요청(reqeust)을 수신한다.
이 패킷에서 요청 데이터량을 누적하여, 요청 데이터량이 1-섹터(Sector) 만큼 누적됐을 때, 요청된 어드레스(Address)와 명령(Command)의 LBA를 합하여 시드(Seed)를 생성하여 로직을 리셋한다.
이때, 해당 LBA는 시드 팩터(Seed Factor)만 같다면, 항상 같은 시드(Seed) 값으로 생성된 무작위 데이터를 저장하게 되어 무작위, 순차 LBA에 상관없이 같은 데이터를 저장하게 된다.
이 때문에, 기대 값(Expected data)을 저장할 추가적인 메모리가 필요 없게 된다. 여기서, 시드 팩터(Seed Factor)란, 기본 시드(Seed) 값 더하여, LBA에 항상 동일한 패턴 데이터이 저장되는 것을 피할 수 있도록 하는 변수이다.
비교모듈(320)은 읽기 및 비교(Read & compare) 동작 시, 패턴 데이터 발생모듈(310)을 통해 생성된 기대 값(Expected data)과, HBA Mwr(Memory Wite Request)의 데이터, 즉 SSD에서 읽은 데이터를 비교하여, 해당 LBA의 데이터가 동일한지 여부를 판단하고, 동일하지 않을 경우, 불량(Fail) 정보를 불량 기록 저장모듈(330)에 저장한다. 즉, 불량 기록 저장모듈(330)에는 불량(Fail)이 발생한 LBA와 기대 값 및 읽은 데이터 등이 저장된다.
시스템 메모리 입력모듈(340)은 시스템 메모리 인터페이스부(400)로부터 사용자가 저장한 데이터를 입력받는다.
시스템 메모리 인터페이스부(400)는 프로세서부(100)와 데이터 엔진부(300)이 메모리부(1100)에 액세스하여 테스트를 진행할 수 있도록 진행에 필요한 데이터를 수신하고, 테스트 결과를 저장한다.
모니터링부(500)는 테스트 불량 발생 시, PCIe 트랜잭션 레이어의 패킷(Packet)을 모니터링하여 저장하며, 프로세서부(100)에서 액세스 가능하다. 도 3 은 프로세서부(100)에서 트랜잭션 레이어의 패킷 로그(Packet log)를 액세스한 로그를 보이는 일예시도이다.
DMA 드라이버/어드레스 트랜슬레이션부(600)는 디바이스 드라이버부(200)가 시나리오를 디코드하고 PCIe Bus를 통해 명령어를 HBA에 전달하게 되면, 모든 데이터의 흐름은 HBA 마스터(Master)가 되는 DMA 동작을 수행하며, 디바이스 드라이버부(200)가 포함되어 있는 루트 콤플렉스(Root Complex)로 메모리 읽음 요청(Memory Read Request)을 보내게 된다. 이때, 데이터 엔진부(300)는 HBA가 요청하는 어드레스(Address)에 대해 데이터를 전달하게 된다.
또한, DMA 드라이버/어드레스 트랜슬레이션부(600)는 HBA EndPoint(EP)가 루트 콤플렉스(Root Complex)로 전송한 요청(Request)에 대한 정보를 수신하여, 디바이스 드라이버부(200)와 데이터 엔진부(300)에 전달한다.
예를 들면, 디바이스 드라이버부(300)가 HBA의 레지스터(Register)에 액세스(access)하기 위한 Mwr(Memory Wite Request) 패킷 전달 플래그를 전달하면, 이 플래그를 디코딩해서 루트 콤플렉스(Root Complex)가 HBA의 레지스터(Register)에 쓰기(Write)를 완료하도록 한다.
그 후, HBA가 루트 콤플렉스(Root Complex)에 명령 헤더(Command Header) 정보를 요청하기 위해 Mrd(Memory Read Request) 패킷을 보내면, 이 패킷을 디바이스 드라이버부(200)에 연결하여, 해당 정보를 디바이스 드라이버부(200)에서 Cpld(Completion with Data) 패킷으로 보낼 수 있도록 패킷(patcket)을 판독하고 연결한다.
메시지 입출력부(700)는 DMA 드라이버/어드레스 트랜슬레이션부(600)의 판독결과, Bus ConRC로 올라오는 TLP가 메시지인 경우, 데이터 엔진부(300)와 디바이스 드라이버부(200)에 전달한다. 또한, 메시지 입출력부(700)는 프로세서부(100)에서 수행되는 Bus 구성(Configuration)을 위한 cfg-tlp를 인터페이스 한다.
PCIe IP부(800)는 PCI Express 로직의 SW IP이다.
스위치부(900)는 PCIe IP부(800)와 연결되어, DUT부(1000)를 구성한다.
도 4 는 본 발명에 따른 스위치를 이용하여 DUT부와 연결된 모습을 보이는 일예시도이며, 도 5 는 본 발명에 따른 다수의 스위치를 이용하여 파라를 늘리는 모습을 보이는 일예시도이다.
이때, 루트 콤플렉스(Root Complex)의 대역폭(Bandwidth) 내에서 구성하는 경우(도 4 참조), 다수의 스위치를 이용하여 파라(PARA, 한 번에 테스트 할 수 있는 스토리지 개수)를 늘리는 구성을 할 수 있다(도 5 참조).
DUT부(1000)는 피시험장치(Device Under Test: DUT)로서, HBA가 포함되어 PCIe에 직접 인터페이스 하는 스토리지이다.
메모리부(1100)는 테스트에 사용될 데이터를 저장하고, 테스크 간 생성되는 기록을 저장한다.
한편, 상술한 바와 같은 테스트 장치를 이용한 테스트 과정을 간략히 살피면 다음과 같다. 먼저, 프로세서부(100)는 PCIe 버스 트리(bus tree)의 장치(device)에 대한 열거(Enumeration) 및 구성(Configuration)을 수행하고, 테스트 하기 위한 시나리오(Scenario)를 작성하여 디바이스 드라이버부(Device Driver)(200)를 설정하고, 테스트를 수행한다. 테스트가 완료된 경우, 테스트 오류 여부를 수신하여, 오류 정보를 저장토록 하며, 오류가 발생하지 않은 경우, 테스트 수행 완료 정보를 저장한다.
이상으로 본 발명의 기술적 사상을 예시하기 위한 바람직한 실시예와 관련하여 설명하고 도시하였지만, 본 발명은 이와 같이 도시되고 설명된 그대로의 구성 및 작용에만 국한되는 것이 아니며, 기술적 사상의 범주를 일탈함이 없이 본 발명에 대해 다수의 변경 및 수정이 가능함을 당업자들은 잘 이해할 수 있을 것이다. 따라서, 그러한 모든 적절한 변경 및 수정과 균등물들도 본 발명의 범위에 속하는 것으로 간주되어야 할 것이다.
100: 프로세서부
200: 디바이스 드라이버부
300: 데이터 엔진부
400: 시스템 메모리 인터페이스부
500: 모니터링부
600: DMA 드라이버/어드레스 트랜슬레이션부
700: 메시지 입출력부
800: PCIe IP부
900: 스위치부
1000: DUT부
1100: 메모리부

Claims (8)

  1. FPGA 내부에 구성되는 마이크로프로세서(EPU)로서, 루트 콤플렉스(Root Complex: RC) 이하 PCIe 버스 트리(bus tree)의 장치에 대한 열거(Enumeration) 및 구성(Configuration)을 수행하고, 테스트 하기 위한 시나리오(Scenario)를 작성하여 디바이스 드라이버부(Device Driver)(200)를 설정하고, 테스트를 수행하도록 하는 프로세서부(100);
    상기 프로세서부(100)가 작성한 테스트 시나리오를 바탕으로, 스토리지 장치에 사용되는 ATA(Advanced Technology Attachment) 명령을 생성하는 블록으로서, 스토리지 장치를 관리하는 고급 호스트 컨트롤러 인터페이스(Advanced Host Controller Interface: AHCI)를 포함하는 HBA(Host Bridge Adapter)와 통신하는 디바이스 드라이버부(200);
    테스트에 이용될 패턴 데이터를 생성하고, 시스템 메모리로부터 사용자가 저장한 데이터에 액세스하여 테스트를 진행하는 데이터 엔진부(300);
    상기 프로세서부(100)와 데이터 엔진부(300)이 메모리부(1100)에 액세스하여 테스트를 진행할 수 있도록 진행에 필요한 데이터를 수신하고, 테스트 결과를 저장하는 시스템 메모리 인터페이스부(400);
    테스트 불량 발생 시, PCIe 트랜잭션 레이어의 패킷(Packet)을 모니터링하여 저장하는 모니터링부(500);
    상기 디바이스 드라이버부(200)가 시나리오를 디코드하고 PCIe Bus를 통해 명령어를 HBA에 전달하게 되면, 모든 데이터의 흐름은 HBA 마스터(Master)가 되는 DMA 동작을 수행하며, 디바이스 드라이버부(200)가 포함되어 있는 루트 콤플렉스(Root Complex)로 메모리 읽음 요청(Memory Read Request)을 보내는 DMA 드라이버/어드레스 트랜슬레이션부(600);
    상기 DMA 드라이버/어드레스 트랜슬레이션부(600)의 판독결과, Bus ConRC로 올라오는 TLP가 메시지인 경우, 데이터 엔진부(300)와 디바이스 드라이버부(200)에 전달하는 메시지 입출력부(700);
    PCI Express 로직의 SW IP인 PCIe IP부(800);
    상기 PCIe IP부(800)와 연결되어, DUT부(1000)를 구성하는 스위치부(900);
    피시험장치로서, HBA가 포함되어 PCIe에 직접 인터페이스 하는 스토리지인 DUT부(1000); 및
    테스트에 사용될 데이터를 저장하고, 테스크 간 생성되는 기록을 저장하는 메모리부(1100); 를 포함하는 FPGA 기반의 비실장형 스토리지 테스트 장치.
  2. 제 1 항에 있어서,
    상기 프로세서부(100)는,
    테스트가 종료되는 경우, 에러 여부 및 성공에 대해 결과를 상기 디바이스 드라이버부(200)로부터 에러 여부 및 성공에 대해 결과를 수신하며, 오류가 있는 경우, PCIe의 TLP와 디바이스 오류 정보를 액세스(access)하는 것을 특징으로 하는 FPGA 기반의 비실장형 스토리지 테스트 장치.
  3. 제 1 항에 있어서,
    상기 디바이스 드라이버부(200)의 명령에는,
    읽고/쓰기(Read/Write) 위한 데이터 버퍼(Data Buffer)의 기준 주소(base address)와 크기(size), 스토리지 장치(SSD)의 로직 블록 어드레스(Logic Block Address: LBA) 정보가 포함되어 있는 것을 특징으로 하는 FPGA 기반의 비실장형 스토리지 테스트 장치.
  4. 제 1 항에 있어서,
    상기 시나리오에 작성하는 정보는,
    전체 테스트 시나리오가 수행되는 시간, LBA MODE(순차모드 또는 무작위 액세스모드), 데이터 패턴(Data pattern), Command Queued Depth를 포함하는 테스트 순서에 필요한 정보와, 고급 호스트 컨트롤러 인터페이스(AHCI) 기반의 PCIe 스토리지(SSD)를 위한 ATA 명령과, SCSI(Small Computer System Interface)를 기반으로 하는 PCIe 스토리지(SSD)를 위한 명령 작성에 필요한 정보 중, 적어도 어느 하나를 포함하는 것을 특징으로 하는 FPGA 기반의 비실장형 스토리지 테스트 장치.
  5. 제 1 항에 있어서,
    상기 데이터 엔진부(300)는,
    SSD에 쓰기(Write)에 필요한 데이터를 생성하고, 읽기 및 비교(Read & compare) 동작 시, 기대 값(Expected Data)을 생성하는 패턴 데이터 발생모듈(310);
    읽기 및 비교(Read & compare) 동작 시, 패턴 데이터 발생모듈(310)을 통해 생성된 기대 값(Expected data)과, HBA Mwr(Memory Wite Request)의 데이터인 SSD에서 읽은 데이터를 비교하여, 해당 LBA의 데이터가 동일한지 여부를 판단하는 비교모듈(320);
    상기 비교부(320)의 판단결과, 동일하지 않을 경우, 불량(Fail) 정보를 저장하는 불량 기록 저장모듈(330); 및
    상기 시스템 메모리 인터페이스부(400)로부터 사용자가 저장한 데이터를 입력받는 시스템 메모리 입력모듈(340); 을 포함하는 것을 특징으로 하는 FPGA 기반의 비실장형 스토리지 테스트 장치.
  6. 제 1 항에 있어서,
    상기 DMA 드라이버/어드레스 트랜슬레이션부(600)는,
    HBA EndPoint(EP)가 루트 콤플렉스(Root Complex)로 전송한 요청(Request)에 대한 정보를 수신하여, 상기 디바이스 드라이버부(200)와 데이터 엔진부(300)에 전달하는 것을 특징으로 하는 FPGA 기반의 비실장형 스토리지 테스트 장치.
  7. 제 1 항에 있어서,
    상기 DMA 드라이버/어드레스 트랜슬레이션부(600)는,
    상기 디바이스 드라이버부(300)가 HBA의 레지스터(Register)에 액세스(access)하기 위한 Mwr(Memory Wite Request) 패킷 전달 플래그를 전달하면, 이 플래그를 디코딩해서 루트 콤플렉스(Root Complex)가 HBA의 레지스터(Register)에 쓰기(Write)를 완료하도록 하며, 상기 HBA가 루트 콤플렉스(Root Complex)에 명령 헤더(Command Header) 정보를 요청하기 위해 Mrd(Memory Read Request) 패킷을 보내면, 이 패킷을 상기 디바이스 드라이버부(200)에 연결하여, 해당 정보를 디바이스 드라이버부(200)에서 Cpld(Completion with Data) 패킷으로 보낼 수 있도록 패킷(patcket)을 판독하고 연결하는 것을 특징으로 하는 FPGA 기반의 비실장형 스토리지 테스트 장치.
  8. 제 1 항에 있어서,
    상기 스위치부(900)는,
    루트 콤플렉스(Root Complex)의 대역폭(Bandwidth) 내에서 구성하는 경우, 다수의 스위치를 이용하여 파라(PARA)수를 늘리는 것을 특징으로 하는 FPGA 기반의 비실장형 스토리지 테스트 장치.
KR1020130116139A 2013-09-30 2013-09-30 Fpga 기반의 비실장형 스토리지 테스트 장치 KR101561854B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020130116139A KR101561854B1 (ko) 2013-09-30 2013-09-30 Fpga 기반의 비실장형 스토리지 테스트 장치
CN201410340524.5A CN104516843B (zh) 2013-09-30 2014-07-17 基于fpga的非安装型存储器测试装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130116139A KR101561854B1 (ko) 2013-09-30 2013-09-30 Fpga 기반의 비실장형 스토리지 테스트 장치

Publications (2)

Publication Number Publication Date
KR20150037002A true KR20150037002A (ko) 2015-04-08
KR101561854B1 KR101561854B1 (ko) 2015-10-22

Family

ID=52792173

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130116139A KR101561854B1 (ko) 2013-09-30 2013-09-30 Fpga 기반의 비실장형 스토리지 테스트 장치

Country Status (2)

Country Link
KR (1) KR101561854B1 (ko)
CN (1) CN104516843B (ko)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107301140A (zh) * 2017-06-27 2017-10-27 山东超越数控电子有限公司 一种利用fpga接口板采用dma进行数据传输的方法
KR20180094602A (ko) * 2017-02-16 2018-08-24 엘에스산전 주식회사 Fpga를 이용한 파워 스택 모니터링 시스템 및 이를 포함하는 파워 스택
CN108681500A (zh) * 2018-04-28 2018-10-19 上海兆芯集成电路有限公司 具有事务记录能力的系统和事务记录方法
CN109062744A (zh) * 2018-07-24 2018-12-21 郑州云海信息技术有限公司 一种实现批量测试服务器内存的方法和系统
WO2018236080A1 (ko) * 2017-06-20 2018-12-27 김병규 피시험 디바이스를 테스트하기 위한 프로세서 기반의 계측 방법 및 이를 이용한 계측 장치
CN110851376A (zh) * 2019-10-21 2020-02-28 天津大学 一种基于FPGA的PCIe接口设计方法
CN114036090A (zh) * 2021-10-25 2022-02-11 天津市英贝特航天科技有限公司 基于fpga进行dma传输的加密图像缓冲解析模块
CN114546917A (zh) * 2022-01-29 2022-05-27 山东云海国创云计算装备产业创新中心有限公司 一种fpga侧辅助ip系统

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9965356B2 (en) * 2016-09-02 2018-05-08 Alibaba Group Holding Limited Method and system of high-availability PCIE SSD with software-hardware jointly assisted implementation to enhance immunity on multi-cell upset
CN107239374B (zh) * 2017-06-06 2020-05-05 烽火通信科技股份有限公司 基于fpga实现ddr接口自动化读写测试的装置及方法
US10663515B2 (en) * 2017-11-01 2020-05-26 Nvidia Corp. Method and apparatus to access high volume test data over high speed interfaces
CN109032859A (zh) * 2018-06-26 2018-12-18 郑州云海信息技术有限公司 一种nvme ssd逻辑块检测方法、系统及相关装置
CN109032897A (zh) * 2018-08-01 2018-12-18 浪潮电子信息产业股份有限公司 数据调度方法、主机以及固态硬盘
KR20200055267A (ko) 2018-11-13 2020-05-21 에스케이하이닉스 주식회사 메모리 시스템 및 테스트 시스템
US10976361B2 (en) * 2018-12-20 2021-04-13 Advantest Corporation Automated test equipment (ATE) support framework for solid state device (SSD) odd sector sizes and protection modes
TWI715162B (zh) * 2019-08-26 2021-01-01 點序科技股份有限公司 記憶體驗證方法及記憶體驗證系統
CN110543396B (zh) * 2019-09-06 2021-03-02 深圳市安信达存储技术有限公司 一种PCIe扩展集群测试硬盘的装置及方法
CN110765033B (zh) * 2019-10-31 2023-03-10 四川效率源信息安全技术股份有限公司 一种ahci模式下访问硬盘的方法
KR20210147319A (ko) 2020-05-28 2021-12-07 삼성전자주식회사 번 인 보드 테스트 장치 및 시스템
CN112363875B (zh) * 2020-10-21 2023-04-07 海光信息技术股份有限公司 一种系统缺陷检测方法、设备、电子设备和存储介质

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100914174B1 (ko) * 2009-02-18 2009-08-26 (주) 제노맥스 Fpga 컨트롤러 기반 테스터 인터페이스 장치
EP2577466A2 (en) * 2010-05-28 2013-04-10 Advantest Corporation Flexible storage interface tester with variable parallelism and firmware upgradeability
KR101254647B1 (ko) * 2012-08-13 2013-04-15 주식회사 유니테스트 솔리드 스테이트 드라이브 테스트장치

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180094602A (ko) * 2017-02-16 2018-08-24 엘에스산전 주식회사 Fpga를 이용한 파워 스택 모니터링 시스템 및 이를 포함하는 파워 스택
WO2018236080A1 (ko) * 2017-06-20 2018-12-27 김병규 피시험 디바이스를 테스트하기 위한 프로세서 기반의 계측 방법 및 이를 이용한 계측 장치
US11460502B2 (en) 2017-06-20 2022-10-04 Phosphil Inc. Processor-based measuring method for testing device under test, and measuring device using same
CN107301140A (zh) * 2017-06-27 2017-10-27 山东超越数控电子有限公司 一种利用fpga接口板采用dma进行数据传输的方法
CN108681500A (zh) * 2018-04-28 2018-10-19 上海兆芯集成电路有限公司 具有事务记录能力的系统和事务记录方法
CN108681500B (zh) * 2018-04-28 2021-09-07 格兰菲智能科技有限公司 具有事务记录能力的系统和事务记录方法
CN109062744A (zh) * 2018-07-24 2018-12-21 郑州云海信息技术有限公司 一种实现批量测试服务器内存的方法和系统
CN110851376A (zh) * 2019-10-21 2020-02-28 天津大学 一种基于FPGA的PCIe接口设计方法
CN114036090A (zh) * 2021-10-25 2022-02-11 天津市英贝特航天科技有限公司 基于fpga进行dma传输的加密图像缓冲解析模块
CN114036090B (zh) * 2021-10-25 2023-10-17 天津市英贝特航天科技有限公司 基于fpga进行dma传输的加密图像缓冲解析模块
CN114546917A (zh) * 2022-01-29 2022-05-27 山东云海国创云计算装备产业创新中心有限公司 一种fpga侧辅助ip系统

Also Published As

Publication number Publication date
CN104516843B (zh) 2018-04-20
KR101561854B1 (ko) 2015-10-22
CN104516843A (zh) 2015-04-15

Similar Documents

Publication Publication Date Title
KR101561854B1 (ko) Fpga 기반의 비실장형 스토리지 테스트 장치
US9378846B2 (en) Non-mounted storage test device based on FPGA
KR101547317B1 (ko) 스토리지 테스트 장치에서 로직 블록 어드레스와 데이터 버퍼 주소를 이용한 불량 블록 검출 시스템
US8504737B2 (en) Serial line protocol for embedded devices
KR20190074194A (ko) 저장 디바이스 메모리 공간에의 직접적인 호스트 액세스
KR20150025393A (ko) 복수개의 스토리지를 개별 제어 가능한 테스트 장치
KR101240634B1 (ko) 솔리드 스테이트 드라이브 테스터에서 실패 검출장치
JP2008065433A (ja) 計算機システム及び性能チューニング方法
KR101254646B1 (ko) 솔리드 스테이트 드라이브 테스터에서 스토리지 인터페이스장치
US9153345B2 (en) Error generating apparatus for solid state drive tester
US10310740B2 (en) Aligning memory access operations to a geometry of a storage device
US20210255794A1 (en) Optimizing Data Write Size Using Storage Device Geometry
US10949096B2 (en) Method using logical based addressing for latency reduction
KR101569049B1 (ko) 패스 스루 스토리지 디바이스들
US20170109092A1 (en) Selective initialization of storage devices for a logical volume
CN114490222B (zh) 一种PCIe P2P系统测试启动方法和装置
TWI793774B (zh) 固態硬碟裝置的除錯方法及裝置以及電腦程式產品
US20180123936A1 (en) Embedding analyzer functionality in storage devices
WO2016209957A1 (en) Aligning memory access operations to a geometry of a storage device

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
FPAY Annual fee payment

Payment date: 20180821

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190906

Year of fee payment: 5