#070f14
; font-family: Verdana, Tahoma, 'Nimbus Sans L', arial, sans-serif; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color:
#ffffff
; display: inline !important; float: none;">Cache IS RAM, but it is located on the HDD's PC board and completely dedicated to that one device. It also is managed by the processor on the HDD's board, taking no resources from the main computer CPU and disk controller. But probably most important is how cache on the HDD is used. For example, when a read request arrives from the disk controller, the HDD's processor locates that sector and, on the assumption that your NEXT request might be for more data from that same file, it will read into its own cache an entire track of data, which will be a few hundred sectors. This is very efficient because, to read ANY sector, it must wait for the disk to turn past the stationary head and "look at" most of the entire track anyway just to find the one it wants. It is better simply to copy ALL of the track into the cache within one disk revolution, then address the right cache location (VERY fast) to get the data required. This may take slightly longer than searching and reading only one sector, but not much. THEN on the next read request, the HDD's first action is to check whether the sector now needed is already in the cache. If so, it is supplied from there, GREATLY reducing the response time. If not, then it can go back to the actual disks and read it from there as above.
#070f14
; font-family: Verdana, Tahoma, 'Nimbus Sans L', arial, sans-serif; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color:
#ffffff
;" />
#070f14
; font-family: Verdana, Tahoma, 'Nimbus Sans L', arial, sans-serif; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color:
#ffffff
;" />#070f14
; font-family: Verdana, Tahoma, 'Nimbus Sans L', arial, sans-serif; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color:
#ffffff
; display: inline !important; float: none;">If you were to try to replicate this by using main board RAM and the disk controller / CPU to do that work, you would use up a lot of resources doing that work. But worse, if it turns out the data is NOT in that cache of mainboard RAM, you've just wasted all those resources! It is better to risk wasting HDD processor / cache resources that are not needed for other work.
#070f14
; font-family: Verdana, Tahoma, 'Nimbus Sans L', arial, sans-serif; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color:
#ffffff
;" />
#070f14
; font-family: Verdana, Tahoma, 'Nimbus Sans L', arial, sans-serif; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color:
#ffffff
;" />#070f14
; font-family: Verdana, Tahoma, 'Nimbus Sans L', arial, sans-serif; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color:
#ffffff
; display: inline !important; float: none;">One technique used to optimize these operations is called split set associative cache management. Instead of using all of the cache available for the current task, the HDD's processor sets up sub-divisions of that RAM - say, 4 separate areas. Then it assigns dynamically certain areas to certain datasets (files) and only uses them for that purpose; access to another file is assigned to a different area, leaving the data in the first area still available for the next time THAT file is requested. Often this is done by assigning some areas to read operations, and others to writes. For this purpose, a larger total cache size provides slightly improved efficiency (and speed) because the sub-divisions can be larger for each file currently in use, increasing the probability that the data sought will be in its cache area already.
#070f14
; font-family: Verdana, Tahoma, 'Nimbus Sans L', arial, sans-serif; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color:
#ffffff
;" />
#070f14
; font-family: Verdana, Tahoma, 'Nimbus Sans L', arial, sans-serif; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color:
#ffffff
;" />#070f14
; font-family: Verdana, Tahoma, 'Nimbus Sans L', arial, sans-serif; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color:
#ffffff
; display: inline !important; float: none;">In earlier times before HDD's acquired on-board controllers, cache RAM, etc., they had really minimal cache RAM on board - about 1 or 2 sector's worth. In those days there ware many utilities (some as part of the DOS OS) that DID do this work using mainboard RAM and the CPU, just because even "wasting" those resources this way was a real improvement over using no cache. Putting these additional separate resources on the HDD and dedicating them to that purpose so that no mainboard resources are used is much better than that.