Please use this identifier to cite or link to this item: http://hdl.handle.net/10773/35077
Title: Dynamic buffer for data transfer protocol
Other Titles: Buffer dinâmico para protocolo de transferência de dados
Author: Carvalho, Gabriel Filipe Mendes
Advisor: Oliveira, Arnaldo Silva Rodrigues de
Keywords: ASICs
FPGAs
System verilog
Segmented buffer
Dynamic memory allocation
DMA
Defense Date: 26-Jul-2022
Abstract: Data transfer protocols such as Peripheral Component Interconnect Express (PCIe) and Advanced Microcontroller Bus Architecture (AMBA) are widely used in many computing systems. They are based on read and write transactions and their function is to interconnect a computing system or modules in a System-on-chip (SoC), as the case may be. One of the bus types most used in AMBA protocols is the bus called Advanced eXtensible Interface (AXI), which was created with the objective of having independent reading and writing and thus being able to perform simultaneous transactions. This protocol is based on two important modules: the AXI Master (the module that initiates the transaction) and the AXI Slave (the module that responds to the transaction). To identify transactions (read or write) an ID identifier is used, which allows the existence of separate transactions, that is, in a given instant there may be multiple transfers in progress and pending between the AXI Master and one or more slaves. For that information is available later to the CPU or DMA the AXI master must have internal buffering capabilities. Thus one of the main concerns of hardware developers, in particular for resourceconstrained and real-time applications, is the efficient use and management of memory since these applications are more latency and cost-sensitive and in which deterministic worst-case behavior is critical. With this, Internal Memory is divided into buffers, either static or dynamic (elastic), Static Buffers have a fixed size, and allow a direct correspondence between IDs and Buffers, but it brings some problems, for example, in a read transaction where it is necessary to write in memory, if the data size is less than the buffer size, as it typically is, it will cause a memory usage inefficiency due to the over sizing of the system. This dissertation aims to reduce these restrictions, using dynamic segmented buffers instead of static buffers, since the memory is divided into several segments (Buffers), where ID will identify both the transfer and the respective buffer, and each buffer will be assigned the slots that are needed, making the buffers only have the necessary size. Throughout this dissertation an architecture was developed, which was subsequently described in SystemVerilog and several critical cases were simulated. After verifying the simulation results, the implementation was synthesised and the necessary changes were made to meet the 1GHz timing. Finally, SpyGlass was used to verify the described design.
Os protocolos de transferência de dados, como o Peripheral Component Interconnect Express (PCIe) e do Advanced Microcontroller Bus Architecture (AMBA), são amplamente utilizados em muitos sistemas de computação. Eles baseiam-se em transações de leitura e escrita e a sua função é interligar um sistema computacional ou interligar módulos num System-on-chip (SoC), consoante os casos. Um dos tipos de barramentos mais utilizados nos protocolos AMBA é o barramento denominado Advanced eXtensible Interface (AXI), que foi criado com o objetivo de ter a leitura e a escrita independentes e assim poderem realizar transações simultâneas. Este protocolo tem por base dois módulos importantes: o AXI Master (módulo que inicia a transação) e o AXI Slave (módulo que responde à transação). Para identificar as transações (leitura ou escrita) é utilizado identificador ID, que permite a existência de transações separadas, ou seja, num dado instante podem existir múltiplas transferências em curso e pendentes entre o AXI Master e um ou vários slaves. Para que a informação seja disponibilizada posteriormente ao CPU ou DMA o AXI master deverá possuir capacidades internas de buffering. Assim uma das principais preocupações dos desenvolvedores de hardware, em particular, para aplicações com restrição de recursos e em tempo real, é o uso e gestão de memória de forma eficiente, uma vez que estas aplicações são mais sensíveis à latência e custo e nos quais o comportamento determinístico nos piores cenários é fundamental. Com isto, a Internal Memory está dividida em buffers, quer sejam estáticos ou dinâmicos (elástico), os Buffers estáticos possuem um tamanho fixo, e permitem que haja uma correspondência direta entre IDs e Buffers, mas traz alguns problemas, como por exemplo, numa transação de leitura onde é necessário escrever na memória, se o tamanho dos dados for inferior ao tamanho do buffer, como é tipicamente, isso provocará uma ineficiência de utilização da memória devido ao sobre dimensionamento do sistema. O objetivo desta dissertação é reduzir estas restrições, utilizando buffers segmentados dinâmicos em vez de buffers estáticos, visto que a memória assim é dividida em vários segmentos (Buffers), onde o ID identificará tanto a transferência quanto o respetivo buffer, e cada buffer terá a si atribuído as slots que são necessárias, fazendo com que os buffers apenas possuam o tamanho necessário. Ao longo desta dissertação foi desenvolvida uma arquitetura, que foi posteriormente descrita em systemVerilog e simulado vários casos críticos. Após verificado os resultados da simulação, a implementação foi sintetizada e foram realizadas as alterações necessárias para cumprir o timing de 1GHz. Por fim foi utilizado o SpyGlass por forma a realizar uma verificação do design descrito.
URI: http://hdl.handle.net/10773/35077
Appears in Collections:UA - Dissertações de mestrado
DETI - Dissertações de mestrado

Files in This Item:
File Description SizeFormat 
Documento_Gabriel_Carvalho.pdf2.71 MBAdobe PDFembargoedAccess


FacebookTwitterLinkedIn
Formato BibTex MendeleyEndnote Degois 

Items in DSpace are protected by copyright, with all rights reserved, unless otherwise indicated.