Modified Harvard architecture
સુધારેલ હાર્વર્ડ આર્કિટેક્ચર એ હાર્વર્ડ કમ્પ્યુટર આર્કિટેક્ચરની વિવિધતા છે, જે શુદ્ધ હાર્વર્ડ આર્કિટેક્ચરથી વિપરીત, સૂચનો ધરાવતી મેમરીને ડેટા તરીકે ઍક્સેસ કરવાની મંજૂરી આપે છે. મોટાભાગના આધુનિક કમ્પ્યુટર્સ કે જે હાર્વર્ડ આર્કિટેક્ચર તરીકે દસ્તાવેજીકૃત છે, હકીકતમાં, સુધારેલ હાર્વર્ડ આર્કિટેક્ચર છે. હાર્વર્ડ આર્કિટેક્ચર મૂળ હાર્વર્ડ આર્કિટેક્ચર કોમ્પ્યુટર, હાર્વર્ડ માર્ક I, સૂચનાઓ અને ડેટાને સંગ્રહિત કરવા માટે સંપૂર્ણપણે અલગ મેમરી સિસ્ટમોનો ઉપયોગ કરે છે. સીપીયુ આગામી સૂચના મેળવે છે અને એક સાથે અને સ્વતંત્ર રીતે ડેટા લોડ અથવા સંગ્રહિત કરે છે. આ વોન ન્યુમેન આર્કિટેક્ચર કોમ્પ્યુટરથી વિપરીત છે, જેમાં સૂચનાઓ અને ડેટા બંને એક જ મેમરી સિસ્ટમમાં સંગ્રહિત થાય છે અને (CPU કેશની જટિલતા વિના) બદલામાં તેનો ઉપયોગ કરવો આવશ્યક છે. સૂચના અને ડેટા મેમરીનું ભૌતિક વિભાજન કેટલીકવાર આધુનિક હાર્વર્ડ આર્કિટેક્ચર કમ્પ્યુટર્સનું વિશિષ્ટ લક્ષણ માનવામાં આવે છે. માઇક્રોકન્ટ્રોલર્સ સાથે (સમગ્ર કમ્પ્યુટર સિસ્ટમો સિંગલ ચિપ્સ પર સંકલિત), સૂચનાઓ માટે વિવિધ મેમરી તકનીકોનો ઉપયોગ (દા. ત. વોન ન્યુમેન મશીનોમાં ફ્લેશ મેમરી) અને ડેટા (સામાન્ય રીતે રીડ/રાઈટ મેમરી) લોકપ્રિય બની રહ્યા છે. હાર્વર્ડ મશીનનો સાચો તફાવત એ છે કે સૂચના અને ડેટા મેમરી વિવિધ સરનામાંની જગ્યાઓ પર કબજો કરે છે. બીજા શબ્દોમાં કહીએ તો, મેમરી સરનામું અનન્ય રીતે સંગ્રહ સ્થાનને ઓળખતું નથી (જેમ તે વોન ન્યુમેન મશીનમાં કરે છે); તે મેમરી જગ્યા (સૂચના અથવા ડેટા) જાણવી પણ જરૂરી છે કે જેમાં સરનામું સંબંધિત છે. વોન ન્યુમેન આર્કિટેક્ચર સાથે કમ્પ્યુટરને હાર્વર્ડ મશીનો પર ફાયદો છે, જેમ કે તે કોડમાં ઉપર વર્ણવેલ છે, તેને પણ એક્સેસ કરી શકાય છે અને ડેટાની જેમ જ સારવાર કરી શકાય છે, અને તેનાથી ઊલટું. આ, ઉદાહરણ તરીકે, ડેટાને ડિસ્ક સંગ્રહમાંથી મેમરીમાં વાંચવાની અને પછી કોડ તરીકે ચલાવવાની મંજૂરી આપે છે, અથવા તેમની પોતાની મેમરીમાં મશીન કોડ લખવા અને પછી તેને ચલાવવા માટે જસ્ટ-ઇન-ટાઇમ સંકલન જેવી તકનીકોનો ઉપયોગ કરીને સોફ્ટવેર સિસ્ટમોનું સ્વ-ઑપ્ટિમાઇઝિંગ કરે છે. બીજું ઉદાહરણ સ્વ-સંશોધિત કોડ છે, જે પ્રોગ્રામને પોતાને સંશોધિત કરવાની મંજૂરી આપે છે. આ પદ્ધતિઓનો ગેરલાભ એ એક્ઝેક્યુટેબલ સ્પેસ પ્રોટેક્શન સાથેના મુદ્દાઓ છે, જે માલવેર અને સોફ્ટવેર ખામીઓથી જોખમોમાં વધારો કરે છે. સંશોધિત હાર્વર્ડ સ્થાપત્ય તદનુસાર, કેટલાક શુદ્ધ હાર્વર્ડ મશીનો વિશિષ્ટ ઉત્પાદનો છે. તેના બદલે મોટાભાગના આધુનિક કમ્પ્યુટર્સ સુધારેલા હાર્વર્ડ આર્કિટેક્ચરનો અમલ કરે છે. તે ફેરફારો કોડ અને ડેટા વચ્ચેના કડક વિભાજનને હળવું કરવાની વિવિધ રીતો છે, જ્યારે હજુ પણ ઉચ્ચ પ્રદર્શન સહવર્તી ડેટા અને હાર્વર્ડ આર્કિટેક્ચરની સૂચના ઍક્સેસને ટેકો આપે છે. સ્પ્લિટ-કેશ (અથવા લગભગ-વોન-ન્યુમેન) આર્કિટેક્ચર સૌથી સામાન્ય ફેરફાર પદાનુક્રમના નીચલા સ્તરે સૂચનાઓ અને ડેટા માટે અલગ CPU કેશ સાથે મેમરી પદાનુક્રમ બનાવે છે. સૂચનાઓ અને ડેટા માટે એક જ સરનામાની જગ્યા છે, જે વોન ન્યુમેન મોડેલ પ્રદાન કરે છે, પરંતુ CPU સૂચના કેશમાંથી સૂચનાઓ મેળવે છે અને ડેટા કેશમાંથી ડેટા મેળવે છે. મોટાભાગના પ્રોગ્રામરોએ એ હકીકતથી ક્યારેય વાકેફ રહેવાની જરૂર નથી કે પ્રોસેસર કોર (સંશોધિત) હાર્વર્ડ આર્કિટેક્ચરનો અમલ કરે છે, જો કે તેઓ તેના ગતિ ફાયદાઓથી લાભ મેળવે છે. જો સ્ટોર સૂચના કેશમાં સૂચનાની કેશ કરેલી નકલને સંશોધિત અથવા અમાન્ય કરતું નથી, તો માત્ર પ્રોગ્રામરો કે જેઓ સૂચનાઓ બનાવે છે અને મેમરીમાં સંગ્રહિત કરે છે તેમણે કેશ સુસંગતતા જેવી સમસ્યાઓ વિશે જાગૃત રહેવાની જરૂર છે. ઇન્સ્ટ્રક્શન-મેમરી-એઝ-ડેટા આર્કિટેક્ચર અન્ય ફેરફાર હાર્વર્ડ મશીનની "અલગ એડ્રેસ સ્પેસ" પ્રકૃતિને જાળવી રાખે છે, પરંતુ ઇન્સ્ટ્રક્શન મેમરીની સામગ્રીને ડેટા તરીકે ઍક્સેસ કરવા માટે વિશેષ મશીન કામગીરી પૂરી પાડે છે. કારણ કે ડેટા સૂચનાઓ તરીકે સીધા એક્ઝેક્યુટેબલ નથી, આવા મશીનોને હંમેશા "સંશોધિત" હાર્વર્ડ આર્કિટેક્ચર તરીકે જોવામાં આવતા નથીઃ રીડ એક્સેસઃ જ્યારે પ્રોગ્રામ શરૂ થાય ત્યારે પ્રારંભિક ડેટા મૂલ્યો સૂચના મેમરીમાંથી ડેટા મેમરીમાં નકલ કરી શકાય છે. અથવા, જો ડેટામાં ફેરફાર ન કરવો હોય (તે સ્થિર મૂલ્ય હોઈ શકે છે, જેમ કે પાઈ, અથવા ટેક્સ્ટ સ્ટ્રિંગ), તો તેને ડેટા મેમરીમાં જગ્યા લીધા વિના સીધા સૂચના મેમરીમાંથી ચાલી રહેલા પ્રોગ્રામ દ્વારા એક્સેસ કરી શકાય છે (જે ઘણીવાર પ્રીમિયમ પર હોય છે). લેખનની સુલભતાઃ સામાન્ય રીતે પુનઃપ્રોગ્રામિંગ માટેની ક્ષમતા જરૂરી છે; થોડા કમ્પ્યુટર્સ સંપૂર્ણપણે ROM-આધારિત હોય છે. ઉદાહરણ તરીકે, માઇક્રોકન્ટ્રોલર સામાન્ય રીતે તેની સૂચનાઓને જાળવી રાખવા માટે ઉપયોગમાં લેવાતી ફ્લેશ મેમરીમાં લખવાની કામગીરી ધરાવે છે. આ ક્ષમતાનો ઉપયોગ સોફ્ટવેર સુધારાઓ સહિતના હેતુઓ માટે થઈ શકે છે. EEPROM/PROM રિપ્લેસમેન્ટ એક વૈકલ્પિક પદ્ધતિ છે. કેટલાક હાર્વર્ડ આર્કિટેક્ચર પ્રોસેસર્સ, જેમ કે મેક્સિમ ઇન્ટિગ્રેટેડ મેક્સક્યુ, કોઈપણ મેમરી સેગમેન્ટમાંથી મેળવેલી સૂચનાઓને ચલાવી શકે છે-મૂળ હાર્વર્ડ પ્રોસેસરથી વિપરીત, જે ફક્ત પ્રોગ્રામ મેમરી સેગમેન્ટમાંથી મેળવેલી સૂચનાઓને જ ચલાવી શકે છે. આવા પ્રોસેસરો, અન્ય હાર્વર્ડ આર્કિટેક્ચર પ્રોસેસરોની જેમ-અને શુદ્ધ વોન ન્યુમેન આર્કિટેક્ચરથી વિપરીત-સૂચના વાંચી શકે છે અને ડેટા મૂલ્યને એક સાથે વાંચી શકે છે, જો તેઓ અલગ મેમરી સેગમેન્ટ્સમાં હોય, કારણ કે પ્રોસેસરમાં સ્વતંત્ર ડેટા બસો સાથે (ઓછામાં ઓછા) બે અલગ મેમરી સેગમેન્ટ્સ હોય છે. આ પ્રકારના સુધારેલા હાર્વર્ડ આર્કિટેક્ચર અને શુદ્ધ વોન ન્યુમેન આર્કિટેક્ચર વચ્ચેનો સૌથી સ્પષ્ટ પ્રોગ્રામર-દૃશ્યમાન તફાવત એ છે કે-જ્યારે એક મેમરી સેગમેન્ટમાંથી સૂચના ચલાવવામાં આવે છે-ત્યારે સમાન મેમરી સેગમેન્ટને એક સાથે ડેટા તરીકે ઍક્સેસ કરી શકાતો નથી. સરખામણીઓ શુદ્ધ હાર્વર્ડ અને વોન ન્યુમેન મશીનોથી સુધારેલા હાર્વર્ડ મશીનોને અલગ પાડવા માટે ત્રણ લાક્ષણિકતાઓનો ઉપયોગ કરી શકાય છેઃ સૂચના અને ડેટા મેમરીઓ અલગ અલગ સરનામાંની જગ્યાઓ પર કબજો કરે છે શુદ્ધ હાર્વર્ડ મશીનો માટે, સૂચના જગ્યામાં એક સરનામું "શૂન્ય" હોય છે જે સૂચના સંગ્રહ સ્થાનનો સંદર્ભ આપે છે અને ડેટા જગ્યામાં એક અલગ સરનામું "શૂન્ય" હોય છે જે અલગ ડેટા સંગ્રહ સ્થાનનો સંદર્ભ આપે છે. તેનાથી વિપરીત, વોન ન્યુમેન અને સ્પ્લિટ-કેશ મોડિફાઇડ હાર્વર્ડ મશીનો સૂચનાઓ અને ડેટા બંનેને એક જ સરનામાંની જગ્યામાં સંગ્રહિત કરે છે, તેથી સરનામું "શૂન્ય" એ માત્ર એક જ સ્થાનનો સંદર્ભ આપે છે અને તે સ્થાનમાં દ્વિસંગી પેટર્નને સૂચના અથવા ડેટા તરીકે અર્થઘટન કરવામાં આવે છે કે કેમ તે પ્રોગ્રામ કેવી રીતે લખવામાં આવે છે તેના દ્વારા વ્યાખ્યાયિત કરવામાં આવે છે. જો કે, શુદ્ધ હાર્વર્ડ મશીનોની જેમ, સૂચના-મેમરી-એ-ડેટા સંશોધિત હાર્વર્ડ મશીનોમાં અલગ સરનામાંની જગ્યાઓ હોય છે, તેથી સૂચના અને ડેટા જગ્યા માટે અલગ સરનામાં "શૂન્ય" હોય છે, તેથી આ તે પ્રકારના સંશોધિત હાર્વર્ડ મશીનોને શુદ્ધ હાર્વર્ડ મશીનોથી અલગ પાડતું નથી. સૂચના અને ડેટા મેમરીમાં કેન્દ્રીય પ્રક્રિયા એકમ (CPU) માટે અલગ હાર્ડવેર માર્ગો હોય છે આ શુદ્ધ અથવા સંશોધિત હાર્વર્ડ મશીનોનો મુદ્દો છે, અને શા માટે તેઓ વધુ લવચીક અને સામાન્ય વોન ન્યુમેન આર્કિટેક્ચર સાથે સહ-અસ્તિત્વ ધરાવે છેઃ CPU માટે અલગ મેમરી માર્ગો સૂચનાઓ મેળવવાની મંજૂરી આપે છે અને ડેટાને એક જ સમયે ઍક્સેસ કરવાની મંજૂરી આપે છે, થ્રુપુટમાં સુધારો કરે છે. શુદ્ધ હાર્વર્ડ મશીનોમાં અલગ સરનામાંની જગ્યાઓ સાથે અલગ માર્ગો હોય છે. સ્પ્લિટ-કેશ મોડિફાઇડ હાર્વર્ડ મશીનોમાં CPU કેશ અથવા અન્ય ચુસ્ત રીતે જોડાયેલી મેમરીઓ માટે આવા અલગ ઍક્સેસ પાથ હોય છે, પરંતુ એકીકૃત ઍક્સેસ પાથ બાકીના મેમરી પદાનુક્રમને આવરી લે છે. વોન ન્યુમેન પ્રોસેસર પાસે માત્ર તે જ યુનિફાઇડ એક્સેસ પાથ છે. પ્રોગ્રામરના દૃષ્ટિકોણથી, સુધારેલ હાર્વર્ડ પ્રોસેસર જેમાં સૂચના અને ડેટા મેમરી સરનામાની જગ્યા વહેંચે છે તેને સામાન્ય રીતે વોન ન્યુમેન મશીન તરીકે ગણવામાં આવે છે, જ્યાં સુધી કેશ સુસંગતતા એક સમસ્યા ન બને, જેમ કે સ્વ-સંશોધિત કોડ અને પ્રોગ્રામ લોડિંગ સાથે. આ ગૂંચવણભર્યું હોઈ શકે છે, પરંતુ આવા મુદ્દાઓ સામાન્ય રીતે માત્ર સિસ્ટમ પ્રોગ્રામરો અને સંકલનકારોને જ દેખાય છે. અન્ય સુધારેલા હાર્વર્ડ મશીનો આ સંબંધમાં શુદ્ધ હાર્વર્ડ મશીનો જેવા છે. મૂળ હાર્વર્ડ મશીન, માર્ક I, સૂચનાઓને પંચ્ડ પેપર ટેપ પર સંગ્રહિત કરે છે અને માહિતીને ઇલેક્ટ્રો-મિકેનિકલ કાઉન્ટર્સમાં સંગ્રહિત કરે છે. જો કે, આ સંપૂર્ણપણે તે સમયે ઉપલબ્ધ તકનીકીની મર્યાદાઓને કારણે હતું. આજે પી. આઈ. સી. માઇક્રોકન્ટ્રોલર જેવી હાર્વર્ડ મશીન સૂચનાઓ માટે 12-બીટ પહોળી ફ્લેશ મેમરી અને ડેટા માટે 8-બીટ પહોળી એસ. આર. એ. એમ. નો ઉપયોગ કરી શકે છે. તેનાથી વિપરીત, વોન ન્યુમેન માઇક્રોકન્ટ્રોલર જેમ કે એ. આર. એમ. 7. ટી. ડી. એમ. આઈ., અથવા સુધારેલ હાર્વર્ડ એ. આર. એમ. 9 કોર, આવશ્યકપણે ફ્લેશ મેમરી અને એસ. આર. એ. એમ. (તે કિસ્સાઓમાં 8 બીટ બાઇટ્સ તરીકે) ની સમાન પહોંચ પૂરી પાડે છે. સુધારેલા હાર્વર્ડ આર્કિટેક્ચરના આધુનિક ઉપયોગો જ્યાં કેશલેસ ડીએસપી અથવા માઇક્રોકન્ટ્રોલરની જરૂર હોય તેવી એપ્લિકેશનોની બહાર, મોટાભાગના આધુનિક પ્રોસેસર્સ પાસે સીપીયુ કેશ હોય છે જે સૂચના અને ડેટાને પાર્ટીશન કરે છે. એવા પ્રોસેસરો પણ છે જે સૌથી સખત વ્યાખ્યા દ્વારા હાર્વર્ડ મશીનો છે (કે પ્રોગ્રામ અને ડેટા મેમરી વિવિધ સરનામાંની જગ્યાઓ પર કબજો કરે છે), અને માત્ર નબળા અર્થમાં સુધારવામાં આવે છે કે પ્રોગ્રામ મેમરીને ડેટા તરીકે વાંચવા અને/અથવા લખવા માટે કામગીરી છે. ઉદાહરણ તરીકે, એટમેલ એવીઆરમાં એલ. પી. એમ. (લોડ પ્રોગ્રામ મેમરી) અને એસ. પી. એમ. (સ્ટોર પ્રોગ્રામ મેમરી) સૂચનાઓ આવા ફેરફારનો અમલ કરે છે. સમાન ઉકેલો અન્ય માઇક્રોકન્ટ્રોલર્સ જેમ કે પીઆઇસી અને ઝેડ8એનકોર!, ડિજિટલ સિગ્નલ પ્રોસેસર્સના ઘણા પરિવારો જેમ કે ટીઆઇ સી55એક્સ કોર અને વધુમાં જોવા મળે છે. કારણ કે સૂચનાનું અમલીકરણ હજુ પણ પ્રોગ્રામ એડ્રેસ સ્પેસ સુધી મર્યાદિત છે, આ પ્રોસેસરો વોન ન્યુમેન મશીનોથી ખૂબ જ વિપરીત છે. બાહ્ય વાયરિંગ સખત રીતે હાર્વર્ડ CPU કોરને સુધારેલા હાર્વર્ડમાં પણ રૂપાંતરિત કરી શકે છે, ઉદાહરણ તરીકે ઇન્ટેલ 8051 ફેમિલી માઇક્રોકન્ટ્રોલર પર AND ગેટ દ્વારા બાહ્ય રીતે 'PSEN #' (પ્રોગ્રામ સ્પેસ રીડ) અને 'RD #' (બાહ્ય ડેટા સ્પેસ રીડ) સંકેતોને જોડીને, માઇક્રોકન્ટ્રોલરને "વોન ન્યુમેન કનેક્ટેડ" કહેવામાં આવે છે, કારણ કે બાહ્ય ડેટા અને પ્રોગ્રામ એડ્રેસ સ્પેસ એકીકૃત થાય છે. અલગ સરનામાંની જગ્યાઓ હોવાથી ઉચ્ચ-સ્તરની ભાષાઓ સાથે પ્રોગ્રામિંગમાં કેટલીક મુશ્કેલીઓ ઊભી થાય છે જે આ ધારણાને સીધી સમર્થન આપતી નથી કે ફક્ત-વાંચી શકાય તેવી માહિતીના કોષ્ટકો સામાન્ય લખી શકાય તેવી માહિતીથી અલગ સરનામાંની જગ્યામાં હોઈ શકે છે (અને તેથી વિવિધ સૂચનાઓનો ઉપયોગ કરીને વાંચવાની જરૂર છે). સી પ્રોગ્રામિંગ લેંગ્વેજ બિન-માનક એક્સ્ટેન્શન્સ દ્વારા અથવા એમ્બેડેડ પ્રોસેસર્સને ટેકો આપવા માટે હવે પ્રમાણિત એક્સ્ટેન્શન્સ દ્વારા બહુવિધ સરનામાંની જગ્યાઓને સમર્થન આપી શકે છે. આ પણ જુઓ હાર્વર્ડ આર્કિટેક્ચર વોન ન્યુમેન આર્કિટેક્ચર નોટ્સ સંદર્ભો કમ્પ્યુટર આર્કિટેક્ચર કમ્પ્યુટર્સના વર્ગો