I didn't quite understand your question but I'll answer you anyways :P..
It's known that the main memory is much larger that the cache memory , and we need to transfer a block of instructions to the cache memory to be frequently used by the processor to improve performance and reduce time spent in fetching instructions or data ( dealing with cache memory is much faster than RAM ). for example lets say that a main memory has a 128 data blocks and you need to place them in the cache memory which consists of 32 data blocks? then you have to have sort of technique to place them or MAPPING FUNCTION. And there are plenty of 'em (four mapping techniques as far as i know) i will just mention them without getting into details:
Direct mapping , fully-associative, set-associative and n-way set associative.
if you need more details just ask.
greetings
Can you please provide some help over Direct mapping , fully-associative, set-associative and n-way set associative
Thanx
Just like that....
Direct mappingA given Main Memory block can be mapped to one and only one Cache Memory line.It is Simple, Inexpensive, fastIt lacks mapping flexibilityAssociative mappingA block in the Main Memory can be mapped to any line in the Cache Memory available (not already occupied)It is slow, expensiveIt has mapping flexibility
The differences among direct mapping and set-associative mapping :Direct mapping : Each line in main memory maps onto a single cache line.Set-associative : Each line in main memory maps onto a small (collection) set of cache line.Direct mapping : A memory block is mapped into a unique cache line, depending on the memory address of the respective block.Set-associative : A memory block is mapped into any of the line of a set. The set is determined by the memory address, but the line inside the set can be any one.dont knowyet
The differences among direct mapping and set-associative mapping :Direct mapping : Each line in main memory maps onto a single cache line.Set-associative : Each line in main memory maps onto a small (collection) set of cache line.Direct mapping : A memory block is mapped into a unique cache line, depending on the memory address of the respective block.Set-associative : A memory block is mapped into any of the line of a set. The set is determined by the memory address, but the line inside the set can be any one.dont knowyet
consider a RAM of 64 words with a size of 16 bits.Assume that this memory have a cache memory of 8 Blocks with block size of 32 bits.Draw a diagram to show the address mapping of RAM and Cache, if 4-way set associative memory scheme is used.
Three types of mapping procedures are there? (1) Associative Mapping-The fastest and most flexible cache organizations uses associative mapping. The associative memory stores both the address and content of memory word. This permits any location in catche to store word in main memory. (2) Direct Mapping-Associative memories are expesive compared to RAM's because of added logic associated with each cell. (3) Set Associative Mapping-It is a more general method that includes pure associative and direct mapping as special case. It is an improvement over the direct mapping organization in that each word of cache can store two or more words of memory under the same index address. Each data word is stored together with its tag and the number of tag data items in one word of cache is said to form a set. With Regards Veer Thakur Chandigarh
Sorry I do not do diagrams
free() is a function used to free the memory allocated dynamically ,by both malloc and calloc functions. free(ptr): ptr is a pointer to a memory block which has already been creeated by malloc or calloc.
1. Word field2. Block field3. Tag fieldTag, Index, and Offset.
Don't!
alloc is used as header file while using malloc and calloc functions in C prog.The definition of malloc function is in the alloc.h file.It's stdlib.h to be more precise
AnswerFlash Memmory is a special type of EEPROM (Eletrically Eraseable Programmable Read Only Memory)The difference between flash memory and EEPROM is that flash memory is block eraseable and EEPROM is byte-erasable.
Realloc is a function in C. It is used to change the size of a block of memory by expanding it. There are various ways realloc can change the memory size, depending on if there is enough space in the block of memory.