The area occupied by a processor not only contributes to the overall chip size but also has its effects on the performance i.e. signals take long to travel because the transmitting lines are longer. During simulation, therefore, it is of interest to computer architects to know the area different components would be occupying on their chip in order to optimize the size and performance of the chip. The UNISIM environment has an Area Estimator tool to estimate the area for different processor components. Depending on the component type, it will calculate its area and display it in square millimeters.
The Area Estimator tool calculates the area occupied by the different components of a processor. For doing that it has to know the values of certain parameters for that component. Generally, the UNISIM modules keep track of these parameters as their internal variables. Since the Area Estimator tool is not connected directly to any module, it does not have access to these variables, nor can the module transmit these variables to the tool. Therefore the user is supposed to pass these parameters as command line arguments to it.
These parameters may vary from module to module. We’ll take the example of Area Estimator for the Caches as these and like structures generally occupy most of the area on a chip. The input parameters to the Area Estimators for Cache-like structures may include their size, line size, associativity etc. The cache_params structure contains a full list of parameters that can be passed to the Area Estimator tool.
All Area Estimator tools need these parameters and they have to display the output. So, they all inherit from a class Area and have a common interface. This interface consists of two virtual functions that the derived classes have to implement. These are shown below:
virtual bool GetCacheParams ( cache_input_parameter_type *params ) = 0 ; virtual void DisplayOutputStats () = 0 ;
As the function names suggest, they are used to get the parameters for Cache and display the output results.
As mentioned above, the Area Estimator tool is a utility that you can execute by passing it the parameters via command line. To use the utility you have to do build it. This can be done by running the make command on command line once you are in the Area Estimator’s directory. This will compile and build the files and generate an executable called AreaEstimator.
The area occupied by the Cache can be obtained by executing the utility on the command line and passing it the required parameters. An example is shown below for the benefit of the users.
Run the AreaEstimator executable file via command line by passing it the Cache paramteres:
[khan@localhost area]$ ./AreaEstimator 8192 32 2 1 0 0 0 1 0.07 8 0 0 0 0
The AreaEstimator’s output is shown below:
/**********************************/ Area Estimator Output /**********************************/ CACHE PARAMS: Cache Size = 8192 Cache Line Size = 32 Associativity = 2 Read/Write Ports= 1 Excl. Read Ports= 0 Excl. WritePorts= 0 Single Ended Read Ports = 0 No. of Banks = 1 Tech. Node = 0.07 Output Width = 8 Specific Tag = 0 Tag Width = 0 Access Mode = 0 Pure SRAM = 0 Area Estimator Results: Cache Total Area (mm²) = 0.151706
It displays the parameter for the Cache that it received as input and then displays the area it has calculated. The description of the input parameters for command line is on this structure's page.
As its internal implementation, the Area Estimator tool makes use of the CACTI power model developed at HP Labs. CACTI tries to guess the internal structure of the CACHE based on the input parameters and then based on be number of composing components it has calculated i.e. decoders, bit lines, word lines it tries to estimate the total area of the Cache.