Design and Implementation of HEVC Motion Estimation on FPGA
Smedberg, Jesse (2024)
Smedberg, Jesse
2024
Master's Programme in Information Technology
Informaatioteknologian ja viestinnän tiedekunta - Faculty of Information Technology and Communication Sciences
This publication is copyrighted. You may download, display and print it for Your own personal use. Commercial use is prohibited.
Hyväksymispäivämäärä
2024-11-15
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:tuni-202411069971
https://urn.fi/URN:NBN:fi:tuni-202411069971
Tiivistelmä
The growing demand for streaming high-quality video in real time and at low bandwidth calls for efficient video coding techniques. The High-Efficiency Video Coding (HEVC) standard ad-dresses this need by reducing video bitrates by up to 40% for the same visual quality when compared with its predecessor, Advanced Video Coding (AVC), albeit with the significantly in-creased coding complexity. High computational complexity of HEVC poses a challenge for re-al-time applications. Therefore, HEVC benefits greatly from hardware (HW) acceleration, making real-time video coding feasible.
High-Level Synthesis (HLS) tools allow HW to be described at a higher level of abstraction. HLS reduces the complexity of development by automating tasks like pipelining and interfacing memories. Compared with traditional hardware description languages (HDLs), HLS offers in-creased productivity and reduced verification effort. This thesis showcases how HLS was used to manage the design complexity of implementing a HW accelerator for HEVC on FPGA.
Kvazaar is an open-source HEVC video encoder developed by Ultra Video Group at Tampe-re University. It offers a balanced coding efficiency and speed without sacrificing video quality. Kvazaar serves as the basis for this thesis, where HW acceleration techniques are applied to improve the performance of the HEVC inter prediction pipeline.
The primary goal of this thesis is to implement and optimize a fractional motion estimation (FME) unit on a Field-Programmable Gate Array (FPGA) using HLS. The design also integrates previous work on integer motion estimation (IME), interpolation, and sum of absolute trans-formed differences (SATD) HW blocks, along with improvements to the hierarchical memory structure and rate distortion optimization (RDO). A custom Linux kernel driver was also devel-oped to facilitate efficient data transfer between the accelerated coding tools on FPGA and other tools on CPU.
Performance tests were carried out to compare the HW accelerated Kvazaar against the pure software (SW) implementation. With a single thread and identical encoding parameters, the ac-celerated version achieved an overall encoding speedup of 2.4× over the SW solution. The quality difference was marginal, with an average coding gain of 0.3% compared with the soft-ware version, thanks to HW computing more fractional motion vectors around the search area. These results show that HW acceleration and HLS tools can achieve competitive results.
Even though the accelerated encoder outperformed the single-threaded SW version, it lacked the ability to exploit the full parallelization capabilities of a multi-threaded software en-coder, which could reduce its relative performance gain with a highly optimized SW encoder. The future work will include improving the accelerator pipeline, adding accelerators on the FPGA, or adding another FPGA. These improvements aim to increase coding speed through increasing accelerator throughput and parallelization. Alati lisääntyvä korkealaatuisen videon reaaliaikainen suoratoistotarve alhaisella kaistanleveydellä vaatii tehokkaita videon pakkaustekniikoita. High-Efficiency Video Coding (HEVC) vastaa tähän tarpeeseen säilyttämällä kuvanlaadun, mutta vähentämällä videon bittinopeutta jopa 40% verrattuna edeltäjäänsä, Advanced Video Coding (AVC) -standardiin, vaikka tämä kasvattaakin merkittävästi koodauksen monimutkaisuutta. HEVC:n suuri laskennallinen vaatimustaso asettaa haasteita reaaliaikaisille sovelluksille. Siksi HEVC hyötyy suuresti laitteistokiihdytyksestä, mikä tekee reaaliaikaisesta videokoodauksesta mahdollista.
High-Level Synthesis (HLS) -työkalut mahdollistavat laitteiston (HW) kuvaamisen korkeammalla abstraktiotasolla. HLS vähentää kehittämisen monimutkaisuutta automatisoimalla tehtäviä, kuten putkittamisen ja muistien liitännät. Tämä diplomityö esittelee, kuinka HLS:ää käytettiin hallitsemaan HEVC-laitteistokiihdyttimen suunnittelun monimutkaisuutta FPGA toteutuksessa.
Kvazaar on Tampereen yliopiston Ultra Video Groupin kehittämä avoimen lähdekoodin HEVC-videokooderi. Se tarjoaa tasapainoisen koodauksen tehokkuuden ja nopeuden ilman, että videon laatu kärsii. Lisäksi Kvazaar tukee rinnakkaisuustekniikoita, joiden avulla se pystyy hyödyntämään moniydinjärjestelmiä. Kvazaar toimii tämän diplomityön perustana, jossa laitteistokiihdytystekniikoita sovelletaan parantamaan HEVC inter-ennustuksen suorituskykyä.
Tämän työn ensisijaisena tavoitteena oli toteuttaa ja optimoida osaliikkeenestimointi-lohko Field Programmable Gate Array (FPGA) -laitteistoon käyttäen HLS-tekniikkaa. Työssä yhdistettiin aiempaa työtä, joka käsitteli kokonaislukupohjaista liikkeen estimointia (IME), interpolointia ja sum of absolute transformed differences (SATD) -laitteistolohkoja, sekä tehtiin parannuksia hierarkkiseen muistirakenteeseen ja rate distortion optimization (RDO) -laskentaan. Lisäksi, mukautettu Linux-ytimen ajuri kehitettiin mahdollistamaan tehokas tiedonsiirto FPGA kiihdytettyjen koodausvälineiden ja muiden CPU:lla toimivien työkalujen välillä.
Suorituskykytestit vertasivat laitteistokiihdytettyä Kvazaaria puhtaaseen ohjelmistopohjaiseen (SW) toteutukseen. Yksisäikeisellä suorituksella ja samoilla koodausparametreilla kiihdytetty versio saavutti 2.4-kertaisen nopeuden ohjelmistototeutukseen verrattuna. Laadullinen ero oli vähäinen, keskimääräisen koodaus hyödyn ollessa 0.3% ohjelmistototeutukseen verrattuna, kiitos laitteiston kyvystä laskea enemmän osittaisia liikevektoreita hakualueella. Tulokset osoittavat, että laitteistokiihdytys ja HLS-työkalut voivat saavuttaa kilpailukykyisiä tuloksia.
Vaikka kiihdytetty kooderi ylitti yksisäikeisen ohjelmistoversion suorituskyvyn, se ei kyennyt hyödyntämään ohjelmiston monisäikeisen rinnakkaiskoodauksen potentiaalia, mikä saattaa vähentää sen suhteellista suorituskykyä erittäin optimoidussa ohjelmistoympäristössä. Tulevaisuuden parannustyönä voidaan tehdä muun muassa kiihdyttimen putkittamisen parannuksia, kiihdyttimien lisääminen FPGA:lle sekä FPGA laitteiden lisääminen. Näiden parannuksien tavoitteena on lisätä koodausnopeutta kiihdyttimen suorituskapasiteetin ja rinnakkaisuuden lisäämisellä.
High-Level Synthesis (HLS) tools allow HW to be described at a higher level of abstraction. HLS reduces the complexity of development by automating tasks like pipelining and interfacing memories. Compared with traditional hardware description languages (HDLs), HLS offers in-creased productivity and reduced verification effort. This thesis showcases how HLS was used to manage the design complexity of implementing a HW accelerator for HEVC on FPGA.
Kvazaar is an open-source HEVC video encoder developed by Ultra Video Group at Tampe-re University. It offers a balanced coding efficiency and speed without sacrificing video quality. Kvazaar serves as the basis for this thesis, where HW acceleration techniques are applied to improve the performance of the HEVC inter prediction pipeline.
The primary goal of this thesis is to implement and optimize a fractional motion estimation (FME) unit on a Field-Programmable Gate Array (FPGA) using HLS. The design also integrates previous work on integer motion estimation (IME), interpolation, and sum of absolute trans-formed differences (SATD) HW blocks, along with improvements to the hierarchical memory structure and rate distortion optimization (RDO). A custom Linux kernel driver was also devel-oped to facilitate efficient data transfer between the accelerated coding tools on FPGA and other tools on CPU.
Performance tests were carried out to compare the HW accelerated Kvazaar against the pure software (SW) implementation. With a single thread and identical encoding parameters, the ac-celerated version achieved an overall encoding speedup of 2.4× over the SW solution. The quality difference was marginal, with an average coding gain of 0.3% compared with the soft-ware version, thanks to HW computing more fractional motion vectors around the search area. These results show that HW acceleration and HLS tools can achieve competitive results.
Even though the accelerated encoder outperformed the single-threaded SW version, it lacked the ability to exploit the full parallelization capabilities of a multi-threaded software en-coder, which could reduce its relative performance gain with a highly optimized SW encoder. The future work will include improving the accelerator pipeline, adding accelerators on the FPGA, or adding another FPGA. These improvements aim to increase coding speed through increasing accelerator throughput and parallelization.
High-Level Synthesis (HLS) -työkalut mahdollistavat laitteiston (HW) kuvaamisen korkeammalla abstraktiotasolla. HLS vähentää kehittämisen monimutkaisuutta automatisoimalla tehtäviä, kuten putkittamisen ja muistien liitännät. Tämä diplomityö esittelee, kuinka HLS:ää käytettiin hallitsemaan HEVC-laitteistokiihdyttimen suunnittelun monimutkaisuutta FPGA toteutuksessa.
Kvazaar on Tampereen yliopiston Ultra Video Groupin kehittämä avoimen lähdekoodin HEVC-videokooderi. Se tarjoaa tasapainoisen koodauksen tehokkuuden ja nopeuden ilman, että videon laatu kärsii. Lisäksi Kvazaar tukee rinnakkaisuustekniikoita, joiden avulla se pystyy hyödyntämään moniydinjärjestelmiä. Kvazaar toimii tämän diplomityön perustana, jossa laitteistokiihdytystekniikoita sovelletaan parantamaan HEVC inter-ennustuksen suorituskykyä.
Tämän työn ensisijaisena tavoitteena oli toteuttaa ja optimoida osaliikkeenestimointi-lohko Field Programmable Gate Array (FPGA) -laitteistoon käyttäen HLS-tekniikkaa. Työssä yhdistettiin aiempaa työtä, joka käsitteli kokonaislukupohjaista liikkeen estimointia (IME), interpolointia ja sum of absolute transformed differences (SATD) -laitteistolohkoja, sekä tehtiin parannuksia hierarkkiseen muistirakenteeseen ja rate distortion optimization (RDO) -laskentaan. Lisäksi, mukautettu Linux-ytimen ajuri kehitettiin mahdollistamaan tehokas tiedonsiirto FPGA kiihdytettyjen koodausvälineiden ja muiden CPU:lla toimivien työkalujen välillä.
Suorituskykytestit vertasivat laitteistokiihdytettyä Kvazaaria puhtaaseen ohjelmistopohjaiseen (SW) toteutukseen. Yksisäikeisellä suorituksella ja samoilla koodausparametreilla kiihdytetty versio saavutti 2.4-kertaisen nopeuden ohjelmistototeutukseen verrattuna. Laadullinen ero oli vähäinen, keskimääräisen koodaus hyödyn ollessa 0.3% ohjelmistototeutukseen verrattuna, kiitos laitteiston kyvystä laskea enemmän osittaisia liikevektoreita hakualueella. Tulokset osoittavat, että laitteistokiihdytys ja HLS-työkalut voivat saavuttaa kilpailukykyisiä tuloksia.
Vaikka kiihdytetty kooderi ylitti yksisäikeisen ohjelmistoversion suorituskyvyn, se ei kyennyt hyödyntämään ohjelmiston monisäikeisen rinnakkaiskoodauksen potentiaalia, mikä saattaa vähentää sen suhteellista suorituskykyä erittäin optimoidussa ohjelmistoympäristössä. Tulevaisuuden parannustyönä voidaan tehdä muun muassa kiihdyttimen putkittamisen parannuksia, kiihdyttimien lisääminen FPGA:lle sekä FPGA laitteiden lisääminen. Näiden parannuksien tavoitteena on lisätä koodausnopeutta kiihdyttimen suorituskapasiteetin ja rinnakkaisuuden lisäämisellä.