Esblygiad Cof
Cof
Un o brif rannau unrhyw gyfrifiadur, o unrhyw gyfnod, yw rhyw fath o storfa ddata. Mae’r union ffordd y mae hyn wedi’i gweithredu a’i datgelu i’r raglennydd wedi newid llawer dros hanes peiriannau cyfrifiadura.
Mae’n bosibl mai’r syniad mwyaf dylanwadol wrth ddatblygu peiriannau cyfrifiadura oedd saernïaeth Von Neumann. Cynigiwyd hyn ym mhapur John Von Neumann ym 1945, First Draft of a Report on the EDVAC. Mewn saernïaeth o'r fath, caiff y rhaglen a’i data eu storio yn yr un ffordd. Dyma estyniad rhesymegol o syniadau Alan Turing - mai dim ond ffurf arall o ddata yw rhaglenni - yng nghyd-destun gweithredu go iawn.
Storfeydd Dilyniannol
Williams Tube oedd y math cyntaf o storfa ddata a ddaethpwyd o hyd iddo mewn cyfrifiaduron cynnar. Yng nghanol y ddyfais roedd tiwb pelydrau catod. Wrth i’r pelydr electron gyrraedd blaen y tiwb mewn dyfais o'r fath, fe'i gwefrir yn negyddol. Gall plât ar y blaen ddarllen y wefr hon. Roedd y weithred o ddarllen gwerth hefyd yn ei ddifetha. Defnyddiwyd tiwbiau Williams yn rhai o’r cyfrifiaduron rhaglenni cyntaf a storiwyd, ond nid oedd modd dibynnu arnynt ac roeddent yn dirywio dros amser a oedd yn golygu nad oeddent yn boblogaidd yn fasnachol.
Datblygwyd Llinell Oedi Mercury oddeutu’r un adeg a daethant lawer yn fwy poblogaidd. Syniad llinell oedi yw bod ton drydanol yn cael ei throi’n don sain ar un ochr. Yna mae'n ymledu ar hyd y cyfrwng (mercwri i ddechrau) ac wedyn caiff ei throi’n ôl i signal trydanol ar yr ochr arall. Mae cyflymder sain mewn mercwri lawer yn is na chyflymder signal trydanol mewn gwifren. Mae hyn yn golygu y gellir creu dolen lle caiff data ei ddarllen yn gyson o un ochr y llinell a’i ysgrifennu’n ôl i’r ochr arall.
Yn y diwedd, cafodd llinellau oedi mercwri eu disodli gan ffurfiau eraill o linellau oedi fel llinellau oedi magnetostrictig, a oedd yn defnyddio magnetedd i ysgogi tro ar un pen y wifren a fyddai'n ymledu ar ei hyd.
Priodwedd allweddol y systemau storio hyn yw eu bod yn ddilyniannol yn gynhenid. Ysgrifennir data ar un ochr llinell oedi, ac ni ellir ei gyrchu nes ei fod yn cyrraedd y pen arall.
Cofrestri a storfeydd dros dro
Er gwaethaf eu cyfyngiadau, arhosodd llinellau oedi’n boblogaidd am beth amser. Defnyddiwyd nifer fach o linellau oedi byr iawn i ychwanegu at systemau cofau arafach. Mewn rhai peiriannau diweddarach, nid oedd modd i’r rhaglennydd weld rhain yn uniongyrchol. Rhoddwyd y term ‘cache’ o’r iaith Ffrengig sy’n golygu ‘i guddio’ i’r rhain. Pan gyrchwyd lleoliad mewn cof arafach, byddai’r lleoliad a’r ardal o’i gwmpas yn cael eu llwytho i’r cof cache (wedi’i guddio) mewn bloc.
Mewn cyfrifiaduron modern, gweithredir cache fel arfer gan ddefnyddio RAM statig. Fodd bynnag, rydym yn dal i gadw'r derminoleg o'r cyfnod hwn ac yn cyfeirio at floc o gof cache wedi'i lwytho mewn un ffordd fel llinell cache.
Defnyddiwyd llinellau oedi hefyd mewn cyfrifiaduron cynnar fel cofrestri. Lleoliad storio sy’n gallu storio gair peiriant a ystyrir yn agos at yr elfennau prosesu yw cofrestr. Gellir cynnal rhifyddeg a gweithrediadau eraill yn uniongyrchol ar werthoedd a gedwir mewn cofrestri.
Cof hapgyrch
Roedd llawer o waith cynnar ar raglennu’n dibynnu ar drefnu cyrchiadau (gweler rhaglennu optimaidd). Gelwir cof modern yn gof hapgyrch (RAM) oherwydd nid yw amseroedd cyrchu yn dibynnu ar y lleoliad yn y storfa. Mae cyrchu gair o gof yn cymryd yr un faint o amser ni waeth ble mae’r gair.
Un o'r ffurfiau RAM cynharaf oedd cof craidd magnetig (a elwir hefyd yn gof craidd ferrite).Roedd y cofau hyn yn gweithio drwy gael grid rheolaidd o wifrau gyda disgiau haearn o gwmpas pob croestoriad. Bydd gosod cerrynt drwy bâr o wifrau’n magneteiddio’r craidd mewn un cyfeiriad neu'r llall gan ddibynnu ar gyfeiriad y cerrynt.
O Fewn a Thu Allan i'r Craidd
Defnyddiwyd cof codau magnetig yn aml ar y cyd â storfa fwy, megis disgiau winchester neu dapiau magnetig.Galwyd y rhain ar y cyd fel storfa y tu allan i'r craidd, i'w gwahanu o storfa fewnol (data sydd yn y creiddiau magnetig).
Y prif wahaniaeth rhwng data mewnol a data y tu allan i'r craidd yw sut y cafodd ei gyrchu gan raglen. Yn nodweddiadol, byddai rhaglennydd yn llwytho data o gof craidd i gofrestri gan ddefnyddio cyfarwyddiadau LOAD a'i ddychwelyd gan ddefnyddio cyfarwyddiadau STORE. Ar rai systemau, gellir cynnal gweithrediadau’n uniongyrchol ar ddata mewn storfeydd craidd magnetig. Nid oedd modd cyrchu storfeydd allanol yn uniongyrchol. Cyn bod modd cyfrifiadura ar ddata a storiwyd y tu allan i’r craidd, roedd angen i’r system weithredu ei lwytho i’r craidd.
Mae’r derminoleg hon yn parhau heddiw. Yn aml iawn mae systemau gweithredu modern yn cyfnewid data o’r prif gof i’r disg caled.Ar systemau UNIX, defnyddir y system galw mincore() (talfyriad 'memory in core') i benderfynu a oes rhywfaint o ddata yn y cof eisoes. Pan fo rhaglen UNIX yn methu, mae’n gollwng copi o’i chof i ffeil sydd ag estyniad .core, sef ‘core dump,’ oherwydd byddai systemau cynnar wedi nodi cynnwys eu storfeydd craidd magnetig er mwyn dadfygio all-lein. Yn ffodus, mae rhaglenwyr modern yn gallu defnyddio cyfarpar lefel uchel i archwilio eu tomenni craidd, ac nid oes angen iddynt ddarllen drwy dudalennau a argraffwyd.