The best leader brings out the best in those he has stewardship over. - J.Richard Clarke
 

Main Menu

Home
Articles
SVTechie Blog
Links
Download
Discussion Forum
Photo Gallery
Quick Bites
FAQs

Login






Lost Password?
No account yet? Register

Statistics

We have 1 guest online

SVTechie Recommends


powered_by.png, 1 kB

Text Links


Home arrow Articles arrow Linked List Implementation in ASIC
Linked List Implementation in ASIC PDF Print E-mail
Written by SVTechie   
Sunday, 23 April 2006

This is starting of series of articles on Link List Memory Implementation in Hardware. First overview article is presented (this article). Later, software implementation specific details are presented in another article. Last, Hardware specific implementation is analyzed and architecture is drived from software implementation.

In networking ASICs, typically aggregated bandwidth of a system is known a priory. But how this bandwidth is distributed across different ports is not known, which requires dynamic memory allocation to be implemented in hardware/ASIC.

At a given time, a port may be using 95% of bandwidth and remaining 5% being distributed to remaining ports. Allocating maximum resources (in this case, Memory) to each port is not economical. For example, if a port may utilize up to 95% of bandwidth then memory needed is 0.95*k*N, where k is arbitrary constant defined by system requirements. Another possibility is to have shared resources/memory and distribute the resources as required (i.e. dynamic allocation of resources/Memory). Memory required in this scenario will be k + overhead (~1.2k). For large N (typically it can be 16-64), memory saving can be multifold. In fact, Link List Manager is one the most complicated block in Networking ASICs.

Memory allocation provides a way to dynamically create buffers and arrays. Dynamic means that the space is allocated in memory as the program is executing. On many occasions the sizes of objects will not be known until run time. For instance, the length of a string a user inputs will not be known prior to execution. The size of an array may depend on parameters unknown until program execution. Certain data structures such as linked lists utilize dynamic memory allocation.

In software world, operating systems has to support dynamic memory management and very little attention is paid by programmer on how allocation is being performed (Dynamic Memory Allocation Performance). However, this allocation mechanism has to be built into the ASIC and etched onto the silicon. And that is focus of this discussion.

In next article, software implementations of Link List are briefly explained. A typical pointer based Link List implementation in ANSI C is shown and analyzed. After that array based software implementation is designed and explained since Array based implementations are simpler to implement in ASIC.

And lastly, Link List requirements are analyzed from Hardware specific viewpoint. Also a typical architecture is shown and possible bottlenecks are identified. At the same time, how various issues can be resolved are presented.

Stay Tuned... 

Disclaimer, the evil necessity: Posted views are of author only and this website and author are no way responsible for any damages caused by usage of this information.

Last Updated ( Tuesday, 25 April 2006 )
 
< Prev   Next >
Free Credit Report | News | Hotels | Loans | Loans
© 2008 SVTechie :: Online Resources For Techies BY Techies
Joomla! is Free Software released under the GNU/GPL License.