{"id":559,"date":"2022-09-29T08:57:27","date_gmt":"2022-09-29T01:57:27","guid":{"rendered":"https:\/\/dgway.com\/blog_E\/?p=559"},"modified":"2022-10-04T12:00:57","modified_gmt":"2022-10-04T05:00:57","slug":"nvme-ip-core-ddr-reference-design-for-sustained-data-rate-application","status":"publish","type":"post","link":"https:\/\/dgway.com\/blog_E\/2022\/09\/29\/nvme-ip-core-ddr-reference-design-for-sustained-data-rate-application\/","title":{"rendered":"NVMe IP Core DDR Reference design for sustained data rate application"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">SSD performance claim is mostly under best condition such as SSD Cache is activated. There is no warranty that SSD can support consistent speed for entire write\/read operation. To achieve high speed sustained data rate recording or reading with NVMe SSD, an amount of Data buffer is required to absorb SSD&#8217;s non-consistent characteristic.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Our NVMe IP core DDR reference design utilizes external DDR memory as a big data buffer to achieve sustained data rate requirement.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This blog will discuss the following topics<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>The true about NVMe SSD performance<\/li><li>Why DDR memory is required for sustained data rate application?<\/li><li>NVMe IP Core DDR reference design demo &amp; performance result<\/li><\/ul>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"372\" src=\"https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/09\/Picture17-1024x372.png\" alt=\"\" class=\"wp-image-560\" srcset=\"https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/09\/Picture17-1024x372.png 1024w, https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/09\/Picture17-300x109.png 300w, https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/09\/Picture17-768x279.png 768w, https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/09\/Picture17-1536x558.png 1536w, https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/09\/Picture17.png 1902w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption>Example: Samsung 980 PRO specification<br><a href=\"https:\/\/www.samsung.com\/th\/memory-storage\/nvme-ssd\/980-pro-1tb-nvme-pcie-gen-4-mz-v8p1t0bw\/\" data-type=\"URL\" data-id=\"https:\/\/www.samsung.com\/th\/memory-storage\/nvme-ssd\/980-pro-1tb-nvme-pcie-gen-4-mz-v8p1t0bw\/\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/www.samsung.com\/th\/memory-storage\/nvme-ssd\/980-pro-1tb-nvme-pcie-gen-4-mz-v8p1t0bw\/<\/a><\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">To understand the true about NVMe SSD performance. For example, Samsung 980 PRO SSD which is claimed sequential write performance is up to 5,100MB\/s. You must read the entire asterisk carefully. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For most NVMe SSD, the maximum performance is possible when CACHE is activated. Which is \u201cIntelligent TurboWrite\u201d cache technology for Samsung 980 PRO case. So, what is the true performance without CACHE or when CACHE is full?<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"758\" src=\"https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/09\/Picture15-2-1024x758.png\" alt=\"\" class=\"wp-image-589\" srcset=\"https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/09\/Picture15-2-1024x758.png 1024w, https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/09\/Picture15-2-300x222.png 300w, https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/09\/Picture15-2-768x569.png 768w, https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/09\/Picture15-2.png 1155w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption>Samsung 980 Pro M.2 NVMe SSD Review: Redefining Gen4 Performance<br><a href=\"https:\/\/www.tomshardware.com\/reviews\/samsung-980-pro-m-2-nvme-ssd-review\/3\" data-type=\"URL\" data-id=\"https:\/\/www.tomshardware.com\/reviews\/samsung-980-pro-m-2-nvme-ssd-review\/3\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/www.tomshardware.com\/reviews\/samsung-980-pro-m-2-nvme-ssd-review\/3<\/a>&nbsp;<\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">The easiest way to know true performance of the NVMe SSD is checking from well-known performance review website such as Tom\u2019s hardware.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Here you can see the sequential write performance of various NVMe SSD. Especially, Samsung 980 PRO, you can see how write speed drop significantly after Intelligent TurboWrite CACHE is not activated or CACHE FULL.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Also, during full disk writing, you can see that write speed some higher or lower than average speed. There is only 2 SSD model in this test, Intel Optane 905P and Samsung 970 PRO SSD, that shown stable and consistent sequential write speed for entire disk. Which means that both SSD implement fast flash memory technology on entire disk, not just only CACHE region.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"758\" src=\"https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/09\/Picture16-2-1024x758.png\" alt=\"\" class=\"wp-image-590\" srcset=\"https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/09\/Picture16-2-1024x758.png 1024w, https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/09\/Picture16-2-300x222.png 300w, https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/09\/Picture16-2-768x569.png 768w, https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/09\/Picture16-2.png 1155w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption>Comparison between Samsung 980 PRO and Intel Optane 905P SSD<\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">You can see that for full disk writing, Intel Optane 905P SSD can provide higher performance and more stable write speed.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Anyway, there is no guarantee that write speed on Intel Optane SSD or any others SSD will not drop during write operation.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">So, If you application required sustained data rate writing to NVMe SSD, such as recording from constant data rate Analog-to-Digital converter or High definition Camera Image sensors, What\u2019s kind of system architecture is suitable to handle this kind of SSD characteristics.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"412\" src=\"https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/09\/Picture23-1024x412.png\" alt=\"\" class=\"wp-image-578\" srcset=\"https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/09\/Picture23-1024x412.png 1024w, https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/09\/Picture23-300x121.png 300w, https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/09\/Picture23-768x309.png 768w, https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/09\/Picture23-1536x618.png 1536w, https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/09\/Picture23.png 1901w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption>Data transfer at sustain rate with DDR<\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">A normal NVMe-IP core has a simple configuration that uses the FPGA internal memory. However, due to the characteristics of NVMe SSD, if the SSD cache becomes full beyond a certain amount of data transfer, the transfer performance will drop.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The NVMe-IP with DDR reference design use external DDR memory to absorb SSD\u2019s unstable characteristics during operation. Allows to transfer data at a stable or sustained transfer rate. The very high speed transferring logic uses an external DDR memory to be a big data buffer instead of a small FIFO by internal FPGA memory.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"379\" src=\"https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/09\/Picture22-2-1024x379.png\" alt=\"\" class=\"wp-image-581\" srcset=\"https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/09\/Picture22-2-1024x379.png 1024w, https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/09\/Picture22-2-300x111.png 300w, https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/09\/Picture22-2-768x284.png 768w, https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/09\/Picture22-2-1536x568.png 1536w, https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/09\/Picture22-2.png 1846w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption>Buffer size usage<\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">In our DDR reference design, User can check and adjust the DDR buffer size usage in the system. Therefore, user can know the requirement of the buffer size that matches with each speed.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"922\" src=\"https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/09\/Picture21-1024x922.png\" alt=\"\" class=\"wp-image-573\" srcset=\"https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/09\/Picture21-1024x922.png 1024w, https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/09\/Picture21-300x270.png 300w, https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/09\/Picture21-768x691.png 768w, https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/09\/Picture21.png 1279w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption>Xilinx KCU105<\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">Here is the performance evaluation of the NVMe-IP core DDR reference design. For demo setup, the Design Gateway AB18-PCIeX16 adapter is connected to the Xilinx KCU105 FPGA board and connect the NVMe SSD. You can check the SSD connection with the identify device command. This demo uses a Intel 900P SSD. <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/09\/image-1024x576.png\" alt=\"\" class=\"wp-image-574\" srcset=\"https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/09\/image-1024x576.png 1024w, https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/09\/image-300x169.png 300w, https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/09\/image-768x432.png 768w, https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/09\/image-1536x864.png 1536w, https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/09\/image.png 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/09\/image-1-1024x576.png\" alt=\"\" class=\"wp-image-575\" srcset=\"https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/09\/image-1-1024x576.png 1024w, https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/09\/image-1-300x169.png 300w, https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/09\/image-1-768x432.png 768w, https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/09\/image-1-1536x864.png 1536w, https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/09\/image-1.png 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption>Example: Demo<\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">The write SSD command inputs the start sector, data size, pattern, the write speed to the SSD, and select DDR size.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Here, 280GB data is written by the LFSR pattern. The transfer data size is displayed every second. When the write is completed, the transfer data size, execution time, write speed, and maximum DDR usage are displayed. At write speed 2285 MB\/s, Intel 900P needs DDR size about 434 MB.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Now we reduces speed to 1500 MB, the DDR usage is reduced to 371 KBs.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"625\" src=\"https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/09\/Picture24-1024x625.png\" alt=\"\" class=\"wp-image-582\" srcset=\"https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/09\/Picture24-1024x625.png 1024w, https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/09\/Picture24-300x183.png 300w, https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/09\/Picture24-768x469.png 768w, https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/09\/Picture24.png 1391w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption>Write speed and Buffer usage on Intel900P<\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">We show the summary result on Intel 900P. When writing at 1000 MB\/s, it uses 152 KB buffer. If increasing write speed to 1500 MB\/s, the buffer will increase to 371 KBs. And if we increase to 2285 MB\/s, the buffer requirement is 434 MBs.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">So, external DDR memory as big data buffer is required for very high sustained data rate application.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"313\" src=\"https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/09\/Picture25-1024x313.png\" alt=\"\" class=\"wp-image-583\" srcset=\"https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/09\/Picture25-1024x313.png 1024w, https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/09\/Picture25-300x92.png 300w, https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/09\/Picture25-768x234.png 768w, https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/09\/Picture25-1536x469.png 1536w, https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/09\/Picture25.png 1877w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption>Application: 4K UHD video recording<\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">One of the example application is 4K ultra HD video recording at 120 FPS. This application requires about 2800 MBs\/s at sustain data rate which can be implemented based on our NVMe-IP Core DDR reference design.<\/p>\n\n\n\n<figure class=\"wp-block-embed aligncenter is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"NVMe IP core DDR reference design for sustained data rate application\" width=\"680\" height=\"383\" src=\"https:\/\/www.youtube.com\/embed\/Zwk0r-TVuNA?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe>\n<\/div><figcaption>Youtube channel: <a href=\"https:\/\/www.youtube.com\/c\/Dgwayweb\" data-type=\"URL\" data-id=\"https:\/\/www.youtube.com\/c\/Dgwayweb\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/www.youtube.com\/c\/Dgwayweb<\/a><\/figcaption><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>SSD performance claim is mostly under best condition such as SSD Cache is activated. There is no warranty that SSD can support consistent speed for entire write\/read operation. To achieve high speed sustained data rate recording or reading with NVMe SSD, an amount of Data buffer is required to absorb SSD&#8217;s non-consistent characteristic. Our NVMe IP core DDR reference design&#46;&#46;&#46;<\/p>\n","protected":false},"author":1,"featured_media":592,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[],"class_list":["post-559","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-storage"],"_links":{"self":[{"href":"https:\/\/dgway.com\/blog_E\/wp-json\/wp\/v2\/posts\/559","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dgway.com\/blog_E\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dgway.com\/blog_E\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dgway.com\/blog_E\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dgway.com\/blog_E\/wp-json\/wp\/v2\/comments?post=559"}],"version-history":[{"count":9,"href":"https:\/\/dgway.com\/blog_E\/wp-json\/wp\/v2\/posts\/559\/revisions"}],"predecessor-version":[{"id":696,"href":"https:\/\/dgway.com\/blog_E\/wp-json\/wp\/v2\/posts\/559\/revisions\/696"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/dgway.com\/blog_E\/wp-json\/wp\/v2\/media\/592"}],"wp:attachment":[{"href":"https:\/\/dgway.com\/blog_E\/wp-json\/wp\/v2\/media?parent=559"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dgway.com\/blog_E\/wp-json\/wp\/v2\/categories?post=559"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dgway.com\/blog_E\/wp-json\/wp\/v2\/tags?post=559"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}