ඉහළ විකිරණශීලී පරිසරයක භාවිතා කිරීම සඳහා යෙදුමක් සම්පාදනය කිරීම


1462

අයනීකරණ විකිරණවලින් බෝම්බ හෙලන ලද පරිසරයක ආවරණයක් සහිත උපාංගයක යොදවා ඇති කාවැද්දූ සී / සී ++ යෙදුමක් අපි සම්පාදනය කරමින් සිටිමු . අපි ARC සඳහා GCC සහ හරස් සම්පාදනය භාවිතා කරමු. යෙදවූ විට, අපගේ යෙදුම වැරදි දත්ත ජනනය කරන අතර අප කැමති ප්‍රමාණයට වඩා බොහෝ විට බිඳ වැටේ. දෘඩාංග මෙම පරිසරය සඳහා නිර්මාණය කර ඇති අතර අපගේ යෙදුම මෙම වේදිකාව මත වසර ගණනාවක් ක්‍රියාත්මක වේ.

අපගේ කේතයට අපට කළ හැකි වෙනස්කම් තිබේද, නැතහොත් තනි සිදුවීම් උඩු යටිකුරු කිරීම නිසා ඇති වූ මෘදු දෝෂ සහ මතක දූෂණය හඳුනා ගැනීමට / නිවැරදි කිරීමට කළ හැකි කාල සම්පාදනයන් තිබේද? දිගුකාලීන යෙදුමක් මත මෘදු දෝෂවල හානිකර බලපෑම් අවම කිරීමට වෙනත් සංවර්ධකයින් සමත් වී තිබේද?


186
මතකයේ අගයන් වෙනස් වේද? නැතහොත් ප්‍රොසෙසරයේ අගයන් වෙනස් වේද? දෘඩාංග පරිසරය සඳහා නිර්මාණය කර ඇත්නම් , මෘදුකාංගය විකිරණශීලී නොවන පරිසරයක ක්‍රියාත්මක වන ආකාරයට ක්‍රියාත්මක විය යුතුය.
තෝමස් මැතිව්ස්

3
හැකි නම්, ඔබ විකිරණවලට ප්‍රතිරෝධී වන වාෂ්පශීලී නොවන මතකයේ සිදුවීම් ගබඩා කරන ල ging ු-සටහන් පද්ධතියක් සැකසිය යුතුය. ඔබට සිද්ධිය සොයා ගැනීමට සහ මූලික හේතුව පහසුවෙන් සොයා ගැනීමට හැකි වන පරිදි ප්‍රමාණවත් තොරතුරු ගබඩා කරන්න.
තෝමස් මැතිව්ස්

2
H තෝමස් මැතිව්ස් සියළුම මතකයේ FIT දෝෂ අනුපාතයක් ඇති අතර දෘඩාංග නිෂ්පාදකයින් බොහෝ පොරොන්දු ලබා දේ. බොහෝ ගැටලු ඇතිවීමට හේතුව SEUs ධාවන වේලාවේදී බැටළුවා වෙනස් කිරීමයි.
rook

9
මෙය සංයුක්ත දෘඩාංග / මෘදුකාංග විසඳුමක් වන නමුත් මම දන්නවා ටෙක්සාස් ඉන්ස්ටියුමන්ට්ස් (සහ බොහෝ විට වෙනත් අය) ආරක්ෂිත විවේචනාත්මක යෙදුම් සඳහා කාවැද්දූ චිප්ස් සෑදී ඇති අතර ඒවා අනුපිටපත් දෙකකින් සමන්විත වේ. දෘඩාංග මඟින් හරය අතර වෙනස් දෙයක් හඳුනාගත් විට ගනු ලබන විශේෂ බාධා කිරීම් සහ යළි පිහිටුවීමේ ක්‍රියාමාර්ග ඇත, එවිට ඔබට දෝෂ වලින් සුවය ලබා ගත හැකිය. මම විශ්වාස කරනවා TI ඒවා "හර්කියුලිස්" ආරක්ෂිත සකසනයන් ලෙස හංවඩු ගසයි.
mbrig

5
අතිරික්ත රළු මෝටර, ගියර්, පතුවළ සහ මීයන්! මාත්‍රා අනුපාත අවශ්‍ය වන පරිදි වාර්ෂිකව හෝ බොහෝ විට ප්‍රතිස්ථාපනය කරන්න. නැත, ඇත්ත වශයෙන්ම, මේ ආකාරයේ ගැටළු සමඟ මගේ පළමු ප්‍රශ්නය සෑම විටම පැවතුනි, ඔබට ඇත්ත වශයෙන්ම එතරම් මෘදුකාංග අවශ්‍යද? ඔබට ගැලවිය හැකි තරම් ඇනලොග් වන්න.
jwdonahue

Answers:


819

මෘදුකාංග / ස්ථිරාංග සංවර්ධනය හා කුඩා චන්ද්‍රිකා වල පරිසර පරීක්ෂාව සමඟ වසර 4-5ක් පමණ වැඩ කිරීම *, මගේ අත්දැකීම් මෙහි බෙදා ගැනීමට කැමැත්තෙමි.

* ( කුඩා චන්ද්‍රිකා එහි විද්‍යුත් උපාංග සඳහා සාපේක්ෂව කුඩා, සීමිත ප්‍රමාණ නිසා විශාල චන්ද්‍රිකාවලට වඩා තනි සිදුවීම් උඩු යටිකුරු වීමට වැඩි ඉඩක් ඇත )

ඉතා සංක්ෂිප්ත හා සෘජු විය: නැවත අයකර ගැනීමට යාන්ත්රණයක් නොමැත හඳුනාගත, වැරදි සහගත තත්වය මෘදුකාංග විසින් / ම ෆර්ම් වෙයාර් තොරව , අවම වශයෙන් එක්, පිටපතක් වන අවම වැඩ අනුවාදය මෘදුකාංග / දෘඪාංගයන්ගේ කොහේ හරි සඳහා යථා - හා සමග අරමුණ දෘඩාංග සහයෝගය ප්‍රතිසාධනය (ක්‍රියාකාරී).

දැන්, මෙම තත්වය සාමාන්‍යයෙන් දෘඩාංග හා මෘදුකාංග මට්ටමින් හසුරුවනු ලැබේ. මෙන්න, ඔබ ඉල්ලන පරිදි, මෘදුකාංග මට්ටමින් අපට කළ හැකි දේ මම බෙදා ගන්නෙමි.

  1. ... ප්‍රතිසාධන අරමුණ… . ඔබේ මෘදුකාංග / ස්ථිරාංග සැබෑ පරිසරය තුළ යාවත්කාලීන කිරීමට / නැවත සකස් කිරීමට / නැවත පිරිපහදු කිරීමට හැකියාව ලබා දෙන්න. ඉහළ අයනීකෘත පරිසරයක ඇති ඕනෑම මෘදුකාංග / ස්ථිරාංග සඳහා මෙය අනිවාර්යයෙන්ම තිබිය යුතු අංගයකි. මෙය නොමැතිව, ඔබට අවශ්‍ය තරම් අතිරික්ත මෘදුකාංග / දෘඩාංග තිබිය හැකි නමුත් එක් අවස්ථාවකදී ඒවා සියල්ලම පුපුරා යනු ඇත. එබැවින්, මෙම අංගය සූදානම් කරන්න!

  2. ... අවම ක්‍රියාකාරී අනුවාදය ... ඔබේ කේතයේ ප්‍රතිචාරාත්මක, බහු පිටපත්, මෘදුකාංගයේ / ස්ථිරාංගයේ අවම අනුවාදය තබා ගන්න. මෙය වින්ඩෝස් හි ආරක්ෂිත මාදිලියකට සමානය. ඔබේ මෘදුකාංගයේ සම්පූර්ණ ක්‍රියාකාරී අනුවාදයක් පමණක් තිබීම වෙනුවට, ඔබේ මෘදුකාංගයේ / ස්ථිරාංගයේ අවම අනුවාදයේ පිටපත් කිහිපයක් තිබිය යුතුය. අවම පිටපතක් සාමාන්යයෙන් සම්පූර්ණ පිටපතක් වඩා බෙහෙවින් අඩු ප්රමාණය ඇති අතර සෑම විටම පාහේ ඇති එකම පහත දෙකක් හෝ තුනක් ලක්ෂණ:

    1. බාහිර පද්ධතියෙන් විධානයන්ට සවන් දිය හැකි,
    2. වත්මන් මෘදුකාංග / ස්ථිරාංග යාවත්කාලීන කිරීමේ හැකියාව,
    3. මූලික මෙහෙයුමේ ගෘහ පාලක දත්ත අධීක්ෂණය කිරීමේ හැකියාව.
  3. ... පිටපත් කරන්න ... කොහේ හරි ... අතිරික්ත මෘදුකාංග / ස්ථිරාංග කොතැනක හෝ තබා ගන්න.

    1. අතිරික්ත දෘඩාංග සමඟ හෝ රහිතව ඔබට ඔබේ ARM uC හි අතිරික්ත මෘදුකාංග / ස්ථිරාංග තබා ගැනීමට උත්සාහ කළ හැකිය. මෙය සාමාන්‍යයෙන් සිදු කරනුයේ එකිනෙකට හෘද ස්පන්දනය යවන වෙනම ලිපිනවල සමාන මෘදුකාංග / ස්ථිරාංග දෙකක් හෝ වැඩි ගණනක් තිබීමෙනි - නමුත් වරකට ක්‍රියාත්මක වන්නේ එක් අයෙකු පමණි. මෘදුකාංග / ස්ථිරාංග එකක් හෝ වැඩි ගණනක් ප්‍රතිචාර නොදක්වන බව දන්නා නම්, අනෙක් මෘදුකාංග / ස්ථිරාංග වෙත මාරු වන්න. මෙම ප්‍රවේශය භාවිතා කිරීමේ වාසිය නම් දෝෂයක් ඇති වූ වහාම අපට ක්‍රියාකාරී ප්‍රතිස්ථාපනය කළ හැකිය - දෝෂය හඳුනාගෙන අලුත්වැඩියා කිරීමට වගකිව යුතු බාහිර පද්ධතියක් / පාර්ශවයක් සමඟ කිසිදු සම්බන්ධයක් නොමැතිව (චන්ද්‍රිකා නඩුවේදී එය සාමාන්‍යයෙන් මෙහෙවර පාලන මධ්‍යස්ථානයයි) MCC)).

      නිශ්චිතවම කිවහොත්, අතිරික්ත දෘඩාංග නොමැතිව, මෙය කිරීමේ අවාසිය නම් ඔබට ඇත්ත වශයෙන්ම සියලු අසාර්ථකත්වයන් තුරන් කළ නොහැකි වීමයි. අවම වශයෙන්, ඔබට තවමත් එක් අසාර්ථක ලක්ෂ්‍යයක් ඇත, එය ස්විචය (හෝ බොහෝ විට කේතයේ ආරම්භය) වේ. එසේ වුවද, ඉහළ අයනීකෘත පරිසරයක (පිකෝ / ෆෙම්ටෝ චන්ද්‍රිකා වැනි) ප්‍රමාණයෙන් සීමා කරන ලද උපාංගයක් සඳහා, අතිරේක දෘඩාංග නොමැතිව එක් ලක්ෂ්‍යයක අසමත් වීමේ ලක්ෂ්‍යය එක් ලක්ෂ්‍යයකට අඩු කිරීම තවමත් සලකා බැලීම වටී. සොමෝර්, මාරුවීම සඳහා වූ කේත කොටස සමස්ත වැඩසටහනේ කේතයට වඩා බෙහෙවින් අඩු වනු ඇත - එහි තනි සිදුවීමක් ලබා ගැනීමේ අවදානම සැලකිය යුතු ලෙස අඩු කරයි.

    2. නමුත් ඔබ මෙය නොකරන්නේ නම්, ඔබේ බාහිර පද්ධතියේ අවම වශයෙන් එක් පිටපතක්වත් තිබිය යුතු අතර එමඟින් උපාංගය හා සම්බන්ධ වී මෘදුකාංග / ස්ථිරාංග යාවත්කාලීන කළ හැකිය (චන්ද්‍රිකා නඩුවේදී එය නැවතත් මෙහෙයුම් පාලන මධ්‍යස්ථානයයි).

    3. ඔබගේ උපාංගයේ ස්ථිර මතක ගබඩාවේ පිටපතක් ද තිබිය හැකි අතර එය ක්‍රියාත්මක වන පද්ධතියේ මෘදුකාංග / ස්ථිරාංග යථා තත්වයට පත් කිරීමට අවුලුවන.
  4. ... හඳුනාගත හැකි වැරදිසහගත තත්වය .. දෝෂය හඳුනාගත යුතුය , සාමාන්‍යයෙන් දෘඩාංග දෝෂ නිවැරදි කිරීම / අනාවරණය කිරීමේ පරිපථය හෝ දෝෂ නිවැරදි කිරීම / අනාවරණය කිරීම සඳහා කුඩා කේතයක් මඟින්. එවැනි කේත කුඩා, බහු හා ප්‍රධාන මෘදුකාංග / ස්ථිරාංග වලින් ස්වාධීනව තැබීම වඩාත් සුදුසුය . එහි ප්රධාන කර්තව්යය වන්නේ, එකම පරීක්ෂා / නිවැරදි සඳහා. දෘඩාංග පරිපථ / ස්ථිරාංග විශ්වාසදායක නම්(එය අනෙක් ඒවාට වඩා විකිරණ ened න වීම වැනි - හෝ බහු පරිපථ / ලොජික් වැනි), එවිට ඔබට එය සමඟ දෝෂ නිවැරදි කිරීම සලකා බැලිය හැකිය. නමුත් එය එසේ නොවේ නම්, එය දෝෂ හඳුනා ගැනීමක් බවට පත් කිරීම වඩා හොඳය. නිවැරදි කිරීම බාහිර පද්ධතිය / උපාංගය මගින් විය හැකිය. දෝෂ නිවැරදි කිරීම සඳහා, හැමිං / ගොලේ 23 වැනි මූලික දෝෂ නිවැරදි කිරීමේ ඇල්ගොරිතමයක් භාවිතා කිරීම ගැන සලකා බැලිය හැකිය, මන්ද ඒවා පරිපථ / මෘදුකාංග යන දෙකෙහිම වඩාත් පහසුවෙන් ක්‍රියාත්මක කළ හැකි බැවිනි. නමුත් එය අවසානයේ රඳා පවතින්නේ ඔබේ කණ්ඩායමේ හැකියාව මත ය. දෝෂ හඳුනා ගැනීම සඳහා සාමාන්‍යයෙන් CRC භාවිතා වේ.

  5. ... ප්‍රතිසාධනයට සහය දක්වන දෘඩාංග දැන්, මෙම ගැටලුවේ වඩාත්ම දුෂ්කර අංගයට පැමිණේ. අවසානයේදී, ප්‍රකෘතියට අවම වශයෙන් ක්‍රියාකාරී වීමට වගකිව යුතු දෘඩාංග අවශ්‍ය වේ . දෘඩාංග ස්ථිරවම කැඩී ඇත්නම් (සාමාන්‍යයෙන් එහි සම්පූර්ණ අයනීකරණ මාත්‍රාව යම් මට්ටමකට ළඟා වූ පසු සිදු වේ), එවිට (කනගාටුවට කරුණක්) මෘදුකාංගය යථා තත්වයට පත් කිරීමට උපකාරී නොවේ. මේ අනුව, දෘඩාංග යනු ඉහළ විකිරණ මට්ටමකට (චන්ද්‍රිකා වැනි) නිරාවරණය වන උපාංගයක් සඳහා අතිශයින්ම වැදගත් වේ.

තනි සිදුවීමක් අවුල් වීම හේතුවෙන් ස්ථිරාංග වල දෝෂයක් අපේක්ෂා කිරීම සඳහා වූ යෝජනාවට අමතරව, ඔබට මෙය කිරීමට යෝජනා කිරීමට මම කැමැත්තෙමි:

  1. අන්තර් උප පද්ධති සන්නිවේදන ප්‍රොටෝකෝලයෙහි දෝෂ හඳුනාගැනීම සහ / හෝ දෝෂ නිවැරදි කිරීමේ ඇල්ගොරිතම. වෙනත් පද්ධතියකින් ලැබෙන අසම්පූර්ණ / වැරදි සං als ා වලක්වා ගැනීම සඳහා මෙය පාහේ තිබිය යුතු තවත් එකකි

  2. ඔබේ ADC කියවීමේදී පෙරහන් කරන්න. එපා නොවන සෘජුවම කියවන්න, ADC භාවිතා කරන්න. මධ්යන්ය පෙරණය, මධ්යන්ය පෙරණය හෝ වෙනත් පෙරහන් මගින් එය පෙරහන් කරන්න - තනි කියවීමේ අගය කිසි විටෙකත් විශ්වාස නොකරන්න . වැඩි සාම්පල, අඩු නොවේ - සාධාරණව.


402

නාසා සතුව විකිරණ- ened න මෘදුකාංග පිළිබඳ ලිපියක් ඇත . එය ප්‍රධාන කාර්යයන් තුනක් විස්තර කරයි:

  1. දෝෂ සඳහා මතකය නිතිපතා අධීක්ෂණය කිරීමෙන් පසුව එම දෝෂ ඉවත් කිරීම,
  2. ශක්තිමත් දෝෂ ප්‍රතිසාධන යාන්ත්‍රණ, සහ
  3. යමක් තවදුරටත් ක්‍රියාත්මක නොවන්නේ නම් නැවත සකස් කිරීමේ හැකියාව.

මතක පරිලෝකන වේගය බහු-බිට් දෝෂ කලාතුරකින් සිදුවන තරම් නිතර නිතර විය යුතු බව සලකන්න, බොහෝ ඊසීසී මතකයට බහු-බිට් දෝෂ නොව තනි-බිට් දෝෂ වලින් යථා තත්ත්වයට පත්විය හැකිය.

ශක්තිමත් දෝෂ ප්‍රතිසාධනයට පාලන ප්‍රවාහ හුවමාරුව (සාමාන්‍යයෙන් දෝෂයක් ඇතිවීමට පෙර ක්‍රියාවලියක් නැවත ආරම්භ කිරීම), සම්පත් මුදා හැරීම සහ දත්ත ප්‍රතිස්ථාපනය ඇතුළත් වේ.

දත්ත ප්‍රතිෂ් oration ාපනය සඳහා ඔවුන්ගේ ප්‍රධාන නිර්දේශය වන්නේ අතරමැදි දත්ත තාවකාලික යැයි සැලකීම තුළින් එහි අවශ්‍යතාවය මග හැරීමයි, එම නිසා දෝෂයට පෙර නැවත ආරම්භ කිරීම ද දත්ත නැවත විශ්වාසදායක තත්වයකට ගෙන යයි. මෙය දත්ත සමුදායන්හි "ගනුදෙනු" සංකල්පයට සමාන ය.

සී ++ වැනි වස්තු-නැඹුරු භාෂාවන් සඳහා විශේෂයෙන් සුදුසු ශිල්පීය ක්‍රම ඔවුන් සාකච්ඡා කරයි. උදාහරණයක් වශයෙන්

  1. පරස්පර මතක වස්තු සඳහා මෘදුකාංග පාදක ඊසීසී
  2. කොන්ත්රාත්තුව අනුව වැඩසටහන්කරණය : පූර්ව කොන්දේසි සහ පසු කොන්දේසි සත්‍යාපනය කිරීම, පසුව එය සත්‍යාපනය කිරීම සඳහා වස්තුව පරීක්ෂා කිරීම තවමත් වලංගු තත්වයක පවතී.

අඟහරු රෝවර් වැනි ප්‍රධාන ව්‍යාපෘති සඳහා නාසා ආයතනය සී ++ භාවිතා කර ඇත .

සී ++ පංති වියුක්ත කිරීම සහ සංවෘත කිරීම මඟින් විවිධ ව්‍යාපෘති සහ සංවර්ධකයින් අතර වේගවත් සංවර්ධනයක් සහ පරීක්ෂණයක් සිදු කිරීමට හැකි විය.

ගැටළු ඇති කළ හැකි සමහර C ++ විශේෂාංග ඔවුන් මග හැරියේය:

  1. ව්යතිරේක
  2. සැකිලි
  3. අයෝස්ට්‍රීම් (කොන්සෝලයක් නොමැත)
  4. බහු උරුමය
  5. ක්‍රියාකරු අධි පැටවීම (හැර newසහ හැර delete)
  6. ගතික වෙන් කිරීම ( newපද්ධති ගොඩවල් දූෂණය වීමේ හැකියාව වළක්වා ගැනීම සඳහා විශේෂිත මතක සංචිතයක් සහ ස්ථානගත කිරීමක් භාවිතා කරන ලදි ).

28
මෙය සැබවින්ම පිරිසිදු භාෂාවක් හොඳ දෙයක් ලෙස පෙනේ. අගයන් කිසි විටෙකත් වෙනස් නොවන බැවින්, ඒවාට හානි සිදුවුවහොත් ඔබට නැවත මුල් අර්ථ දැක්වීම වෙත යා හැකිය (එය එසේ විය යුතුය), ඔබ අහම්බෙන් එකම දේ දෙවරක් නොකරනු ඇත (අතුරු ආබාධ නොමැති නිසා).
පයිරුලස්

20
RAII යනු නරක අදහසකි, මන්ද එය නිවැරදිව හෝ කිසිසේත් ක්‍රියාත්මක වීම මත රඳා පැවතිය නොහැක. එය ඔබගේ දත්ත අහඹු ලෙස හානි කළ හැකිය. ඔබට සැබවින්ම අවශ්‍ය වන්නේ ඔබට ලබා ගත හැකි තරම් වෙනස් කළ නොහැකි බව සහ ඊට ඉහළින් ඇති දෝෂ නිවැරදි කිරීමේ යාන්ත්‍රණයන් ය. කෙසේ හෝ ඒවා අලුත්වැඩියා කිරීමට වඩා කැඩුණු දේවල් ඉවතලීම පහසුය (නිවැරදි පැරණි තත්වයට ආපසු යාමට ඔබ හරියටම දන්නේ කෙසේද?). ඔබට මේ සඳහා තරමක් මෝඩ භාෂාවක් භාවිතා කිරීමට අවශ්‍ය වනු ඇත, නමුත් - ප්‍රශස්තිකරණය ඔවුන් උදව් කරනවාට වඩා හානියක් විය හැකිය.
ලුවාන්

67
YPyRulez: පිරිසිදු භාෂා යනු වියුක්තයකි, දෘඩාංග පිරිසිදු නොවේ. වෙනස සැඟවීමට සම්පාදකයින් තරමක් හොඳයි. ඔබේ වැඩසටහනට වටිනාකමක් තිබේ නම් එය X පියවරෙන් පසුව තාර්කිකව භාවිතා නොකළ යුතුය, සම්පාදකයා එය X + 1 පියවරෙන් ගණනය කළ අගය සමඟ නැවත ලියයි. නමුත් මෙයින් අදහස් කරන්නේ ඔබට ආපසු යා නොහැකි බවයි. වඩාත් විධිමත් ලෙස, පිරිසිදු භාෂාවකින් වැඩසටහනක ඇති විය හැකි තත්වයන් ඇසික්ලික් ප්‍රස්ථාරයක් සාදයි, එයින් අදහස් වන්නේ ප්‍රාන්ත දෙකක් සමාන වන අතර දෙකෙන්ම ළඟා විය හැකි රාජ්‍යයන් සමාන වන විට ඒකාබද්ධ කළ හැකිය. මෙම ඒකාබද්ධ කිරීම එම රාජ්‍යයන් කරා යන මාර්ගවල වෙනස විනාශ කරයි.
MSalters

2
Ov වොරාක් - ඉදිරිපත් කිරීම අනුව C ++ සැකිලි කෙරෙහි සැලකිලිමත් වන්නේ කේත පිපිරීමයි.
jww

3
EDeerSpotter නිශ්චිත ගැටළුව ඊට වඩා විශාලය. අයනීකරණය මඟින් ඔබේ ධාවන මුරකරු වැඩසටහනේ බිටු වලට හානි කළ හැකිය. එවිට ඔබට මුරකරුවෙකුගේ මුරකරුවෙකු අවශ්‍ය වනු ඇත, එවිට - මුරකරුවෙකුගේ මුරකරුවෙකු සහ එසේ ය ...
ඇග්නියස් වාසිලියස්කාස්

117

මෙන්න සිතුවිලි සහ අදහස් කිහිපයක්:

ROM වඩාත් නිර්මාණශීලීව භාවිතා කරන්න.

ඔබට හැකි ඕනෑම දෙයක් ROM හි ගබඩා කරන්න. දේවල් ගණනය කරනවා වෙනුවට, බැලීමේ වගු ROM හි ගබඩා කරන්න. (ඔබේ සම්පාදකයා ඔබේ බැලීමේ වගු කියවීමට පමණක් ඇති කොටසට ප්‍රතිදානය කරන බවට වග බලා ගන්න! පරීක්ෂා කිරීම සඳහා ධාවන වේලාවේදී මතක ලිපින මුද්‍රණය කරන්න!) ඔබේ බාධාකාරී දෛශික වගුව ROM හි ගබඩා කරන්න. ඇත්ත වශයෙන්ම, ඔබේ ROM එක ඔබේ RAM සමඟ සැසඳීමේදී කොතරම් විශ්වාසදායකදැයි බැලීමට පරීක්ෂණ කිහිපයක් ක්‍රියාත්මක කරන්න.

තොගය සඳහා ඔබේ හොඳම RAM භාවිතා කරන්න.

දර්ශකයේ විචල්යයන්, තත්ව විචල්යයන්, ආපසු ලිපින සහ විවිධ වර්ගයේ දර්ශක වැනි දේවල් සාමාන්යයෙන් වාසය කරන නිසා, තොගයේ ඇති SEUs බොහෝ විට බිඳ වැටීම් වලට හේතු වේ.

ටයිමර්-ටික් සහ ඔරලෝසු ටයිමර් චර්යාවන් ක්‍රියාත්මක කරන්න.

සෑම ටයිමර් ටික් එකක්ම ඔබට "සනීපාරක්ෂාව පිරික්සීමේ" චර්යාවක් මෙන්ම පද්ධතිය අගුළු දැමීම පාලනය කිරීම සඳහා ඔරලෝසුවක් ද කළ හැකිය. ඔබේ ප්‍රධාන කේතයට වරින් වර ප්‍රගතිය දැක්වීමට කවුන්ටරයක් ​​වැඩි කළ හැකි අතර, සනීපාරක්ෂාව පිරික්සීමේ ක්‍රියාවලිය මඟින් මෙය සිදුවී ඇති බව සහතික කළ හැකිය.

ක්රියාත්මක දෝෂ නිවැරදි-කේත මෘදුකාංග.

දෝෂ හඳුනා ගැනීමට සහ / හෝ නිවැරදි කිරීමට ඔබේ දත්ත වලට අතිරික්තයක් එක් කළ හැකිය. මෙය සැකසුම් කාලය එකතු කරනු ඇති අතර, ප්‍රොසෙසරය විකිරණවලට නිරාවරණය වීමට වැඩි කාලයක් ගතවන අතර එමඟින් දෝෂ ඇතිවීමේ හැකියාව වැඩි වේ.

හැඹිලි මතක තබා ගන්න.

ඔබගේ CPU හැඹිලි වල ප්‍රමාණයන් පරීක්ෂා කරන්න. ඔබ මෑතකදී ප්‍රවේශ වූ හෝ වෙනස් කළ දත්ත බොහෝ විට හැඹිලියක් තුළ වනු ඇත. ඔබට අවම වශයෙන් සමහර හැඹිලි අක්‍රීය කළ හැකි යැයි මම විශ්වාස කරමි (විශාල කාර්ය සාධන පිරිවැයකින්); SEUs සඳහා හැඹිලි කොතරම් පහසුවෙන් නැඹුරු වේදැයි බැලීමට ඔබ මෙය උත්සාහ කළ යුතුය. හැඹිලි RAM වලට වඩා අමාරු නම්, ඔබට නිරන්තරයෙන් විවේචනාත්මක දත්ත කියවා නැවත ලිවිය හැකිය, එය හැඹිලියේ පවතින බව සහතික කර RAM නැවත පෙළට ගෙන එනු ඇත.

පිටු දෝෂ හසුරුවන්නන් දක්ෂ ලෙස භාවිතා කරන්න.

ඔබ මතක පිටුවක් නොපවතින ලෙස සලකුණු කළහොත්, ඔබ එයට ප්‍රවේශ වීමට උත්සාහ කරන විට CPU විසින් පිටු දෝෂයක් නිකුත් කරනු ඇත. ඔබට පිටු-දෝෂ හසුරුවන්නෙකු නිර්මාණය කළ හැකි අතර එය කියවීමේ ඉල්ලීමට සේවය කිරීමට පෙර යම් පරීක්‍ෂණයක් සිදු කරයි. (පරිගණක මෙහෙයුම් පද්ධති මෙය තැටියට මාරු කර ඇති පිටු විනිවිද පෙනෙන ලෙස පූරණය කිරීමට භාවිතා කරයි.)

විවේචනාත්මක දේවල් සඳහා එකලස් කිරීමේ භාෂාව භාවිතා කරන්න (එය සියල්ල විය හැකිය).

එකලස් කිරීමේ භාෂාව සමඟ, ඔබ ලේඛනයේ ඇති දේ සහ RAM හි ඇති දේ දන්නවා ; CPU භාවිතා කරන විශේෂ RAM වගු මොනවාදැයි ඔබ දන්නා අතර ඔබේ අවදානම අඩු කර ගැනීම සඳහා වටරවුමකින් දේවල් සැලසුම් කළ හැකිය.

objdumpජනනය කරන ලද එකලස් කිරීමේ භාෂාව සැබවින්ම බැලීමට භාවිතා කරන්න , සහ ඔබේ එක් එක් ක්‍රියාකාරකම් සඳහා කොපමණ කේත ප්‍රමාණයක් ගතවේද යන්න සොයා බලන්න.

ඔබ ලිනක්ස් වැනි විශාල මෙහෙයුම් පද්ධතියක් භාවිතා කරන්නේ නම් ඔබ ඉල්ලන්නේ කරදරයකි; වැරදි කිරීමට බොහෝ සංකීර්ණතා සහ බොහෝ දේ ඇත.

එය සම්භාවිතා ක්‍රීඩාවක් බව මතක තබා ගන්න.

විචාරකයෙක් පැවසීය

දෝෂ හඳුනා ගැනීම සඳහා ඔබ ලියන සෑම පුරුද්දක්ම එකම හේතුවකින් අසමත් වීමට යටත් වේ.

මෙය සත්‍යයක් වන අතර, චෙක් චර්යාවක් නිවැරදිව ක්‍රියාත්මක වීමට අවශ්‍ය කේත (දත්ත) බයිට් 100 හි දෝෂ ඇතිවීමේ සම්භාවිතාව වෙනත් තැනක දෝෂ ඇතිවීමට වඩා ඉතා කුඩාය. ඔබේ ROM තරමක් විශ්වාසදායක නම් සහ සියලුම කේත / දත්ත ඇත්ත වශයෙන්ම ROM හි තිබේ නම් ඔබේ අවාසි ඊටත් වඩා හොඳය.

අතිරික්ත දෘඩාංග භාවිතා කරන්න.

සමාන කේතයක් සහිත සමාන දෘඩාංග සැකසුම් 2 ක් හෝ වැඩි ගණනක් භාවිතා කරන්න. ප්‍රති results ල වෙනස් නම්, යළි පිහිටුවීම අවුලුවන. උපාංග 3 ක් හෝ වැඩි ගණනක් සමඟ ඔබට "ඡන්දය දීමේ" පද්ධතියක් භාවිතා කර කුමන සම්මුතියක් ඇති වී ඇත්දැයි හඳුනා ගැනීමට උත්සාහ කළ හැකිය.


14
වර්තමානයේ, දෘඩාංග හරහා ECC ලබා ගත හැකි අතර එය සැකසුම් කාලය ඉතිරි කරයි. පළමු පියවර වනුයේ බිල්ට් ඊසීසී සමඟ මයික්‍රොකොන්ට්රෝලර් තෝරා ගැනීමයි.
ලුන්ඩින්

23
අතිරික්ත ගෘහ නිර්මාණ ශිල්පය පැහැදිලිවම නිර්මාණය කර ඇත්තේ එක හා සමාන නොවන ලෙස (සහ විවිධ කණ්ඩායම් විසින්) ගුවන් යානා (සමහර විට අභ්‍යවකාශ ෂටලය?) පියාසර දෘඩාංග ගැන මගේ මනසෙහි කොතැනක හෝ සඳහන් වේ. එසේ කිරීමෙන් දෘඩාංග / මෘදුකාංග සැලසුමෙහි පද්ධතිමය දෝෂයක් ඇතිවීමේ හැකියාව අවම වන අතර එකම ආදාන සමඟ ගැටෙන විට සියලුම ඡන්ද ක්‍රම එකවරම බිඳ වැටීමේ හැකියාව අඩු කරයි.
පීටර් එම්

8
EtPeterM: බෝයිං 777 සඳහා පියාසර මෘදුකාංග සඳහා හිමිකම් කියන AFAIK: ක්‍රමලේඛන භාෂා තුනකින් කණ්ඩායම් තුනක් විසින් අනුවාද තුනක්.
මාටින් ෂ්‍රෝඩර්

7
An ඩෑන් එස්පර්සා RAM හි සාමාන්‍යයෙන් ධාරිත්‍රකයක් (DRAM) හෝ දත්ත ගබඩා කරන ප්‍රතිපෝෂණ (SRAM) ට්‍රාන්සිස්ටර කිහිපයක් ඇත. විකිරණ සිදුවීමකට ධාරිත්‍රකය ව්‍යාජ ලෙස ආරෝපණය / විසර්ජනය කළ හැකිය, නැතහොත් ප්‍රතිපෝෂණ වළල්ලේ සං signal ාව වෙනස් කළ හැකිය. ROM ට සාමාන්‍යයෙන් ලිවීමේ හැකියාව අවශ්‍ය නොවේ (අවම වශයෙන් විශේෂ තත්වයන් සහ / හෝ වැඩි වෝල්ටීයතාවයකින් තොරව) සහ එබැවින් භෞතික මට්ටමින් සහජයෙන්ම වඩා ස්ථායී විය හැකිය.
නැනෝෆරාඩ්

7
An ඩෑන් එස්පර්සා: විවිධ වර්ගයේ ROM මතකයන් ඇත. "ROM" අනුකරණය කරන්නේ එනම් ඊප්‍රොම් හෝ ෆ්ලෑෂ් කියවීමට පමණක් 5v දී නමුත් ක්‍රමලේඛගත කළ හැකි 10v නම්, ඇත්ත වශයෙන්ම "ROM" තවමත් අයනීකරණයට ගොදුරු වේ. සමහර විට අනෙක් අයට වඩා අඩු විය හැකිය. කෙසේ වෙතත්, මාස්ක් රෝම් හෝ ෆියුස් මත පදනම් වූ ප්‍රෝම් වැනි හොඳ දෘඩ දේවල් තිබේ, එය අසාර්ථක වීමට පටන් ගැනීම සඳහා බරපතල විකිරණ ප්‍රමාණයක් අවශ්‍ය වනු ඇතැයි මම සිතමි. කෙසේ වෙතත් තවමත් නිෂ්පාදනය කර ඇත්දැයි මම නොදනිමි.
quetzalcoatl

105

ඇල්ගොරිතම දෝෂ ඉවසීම යන මාතෘකාව පිළිබඳ පොහොසත් සාහිත්‍යය කෙරෙහි ද ඔබ උනන්දු විය හැකිය. පැරණි පැවරුම මෙයට ඇතුළත් වේ: නියත සැසඳීම් සංඛ්‍යාවක් අසමත් වන විට එහි ආදානය නිවැරදිව වර්ග කරන වර්ගයක් ලියන්න (හෝ, තරමක් වැඩි නපුරු අනුවාදය, අසමමිතික සංඛ්‍යා අසමත් වූ සැසඳීම් පරිමාණයන් log(n)සඳහාn සැසඳීම්).

කියවීම ආරම්භ කළ හැකි ස්ථානයක් වන්නේ හුවාං සහ ඒබ්‍රහම්ගේ 1984 පත්‍රිකාව වන “ මැට්‍රික්ස් මෙහෙයුම් සඳහා ඇල්ගොරිතම මත පදනම් වූ වැරදි ඉවසීමයි ” යන්නයි. ඔවුන්ගේ අදහස සමජාතීය සංකේතාත්මක ගණනය කිරීම් වලට නොපැහැදිලි ලෙස සමාන වේ (නමුත් මෙහෙයුම් මට්ටමින් දෝෂ හඳුනා ගැනීමට / නිවැරදි කිරීමට ඔවුන් උත්සාහ කරන බැවින් එය ඇත්ත වශයෙන්ම සමාන නොවේ).

එම පුවත්පතේ වඩාත් මෑත පරම්පරාව වන්නේ බොසිල්කා, ඩෙල්මාස්, ඩොන්ගරා සහ ලැන්ගෝගේ “ ඉහළ කාර්යසාධනයක් සහිත පරිගණක සඳහා ඇල්ගොරිතම මත පදනම් වූ දෝෂ ඉවසීමයි ”.


5
මම ඇත්තටම ඔබේ ප්‍රතිචාරයට කැමතියි. මෙය දත්ත අඛණ්ඩතාව සඳහා වඩාත් සාමාන්‍ය මෘදුකාංග ප්‍රවේශයක් වන අතර අපගේ අවසාන නිෂ්පාදනයේදී ඇල්ගොරිතම මත පදනම් වූ දෝෂ ඉවසීමේ විසඳුමක් භාවිතා කරනු ඇත. ස්තූතියි!
රූක්

43

විකිරණශීලී පරිසරයන් සඳහා කේත ලිවීම ඇත්ත වශයෙන්ම ඕනෑම මෙහෙවර-විවේචනාත්මක යෙදුමක් සඳහා කේත ලිවීමට වඩා වෙනස් නොවේ.

දැනටමත් සඳහන් කර ඇති දේට අමතරව, විවිධ උපදෙස් කිහිපයක් මෙන්න:

  • ඕනෑම අර්ධ වෘත්තිමය කාවැද්දූ පද්ධතියක තිබිය යුතු එදිනෙදා “පාන් සහ බටර්” ආරක්ෂක පියවරයන් භාවිතා කරන්න: අභ්‍යන්තර ඔරලෝසුව, අභ්‍යන්තර අඩු වෝල්ටීයතා අනාවරණය, අභ්‍යන්තර ඔරලෝසු මොනිටරය. මේ දේවල් 2016 වර්ෂයේ සඳහන් කිරීම පවා අවශ්‍ය නොවිය යුතු අතර ඒවා සෑම නවීන ක්ෂුද්‍ර පාලකයකම ප්‍රමිතියකි.

  • ඔබට ආරක්ෂිත සහ / හෝ මෝටර් රථ-නැඹුරු MCU තිබේ නම්, එයට නියමිත කාල කවුළුවක් වැනි ඇතැම් ඔරලෝසු විශේෂාංග ඇත, ඇතුළත ඔබට ඔරලෝසුව නැවුම් කළ යුතුය. ඔබට මෙහෙවර-විවේචනාත්මක තත්‍ය කාලීන පද්ධතියක් තිබේ නම් මෙය වඩාත් සුදුසු වේ.

  • පොදුවේ ගත් කල, මේ ආකාරයේ පද්ධති සඳහා සුදුසු MCU එකක් භාවිතා කරන්න, ඉරිඟු පිටි පැකට්ටුවක ඔබට ලැබුණු සමහර සාමාන්‍ය ප්‍රධාන ධාරාව නොවේ. වර්තමානයේ සෑම MCU නිෂ්පාදකයෙකුටම පාහේ ආරක්ෂිත යෙදුම් (TI, Freescale, Renesas, ST, Infineon ආදිය) සඳහා නිර්මාණය කර ඇති විශේෂිත MCU ඇත. අගුළු-පියවර හරය ඇතුළුව මේවා තුළ ආරක්ෂිත අංග රාශියක් ඇත: එනම් එකම කේතය ක්‍රියාත්මක කරන CPU මධ්‍ය 2 ක් ඇති අතර ඒවා එකිනෙකා සමඟ එකඟ විය යුතුය.

  • වැදගත්: ඔබ අභ්‍යන්තර MCU ලේඛනයේ අඛණ්ඩතාව සහතික කළ යුතුය. ලිවිය හැකි දෘඩාංග පර්යන්තවල සියලුම පාලන සහ තත්ව ලේඛණ RAM මතකයේ පිහිටා ඇති අතර එම නිසා ඒවා අවදානමට ලක් වේ.

    රෙජිස්ටර් දූෂණයන්ගෙන් ඔබව ආරක්ෂා කර ගැනීම සඳහා, රෙජිස්ටරයේ “ලිවීමට වරක්” විශේෂාංග සහිත මයික්‍රොකොන්ට්රෝලර් තෝරා ගන්න. ඊට අමතරව, ඔබ සියලු දෘඩාංග ලේඛනයේ පෙරනිමි අගයන් NVM හි ගබඩා කර එම අගයන් නියමිත වේලාවට ඔබේ ලේඛනයට පිටපත් කළ යුතුය. වැදගත් විචල්‍යයන්ගේ අඛණ්ඩතාව එකම ආකාරයකින් සහතික කළ හැකිය.

    සටහන: සෑම විටම ආරක්ෂක වැඩසටහන් භාවිතා කරන්න. ඔබ පිහිටුවීම් කිරීමට ඇති බව අර්ථය සියලු වන MCU දී ලේඛන හා ඉල්ලුම් විසින් භාවිතා කරන අය පමණක් නොවේ. අහඹු දෘඩාංග පර්යන්ත හදිසියේ අවදි වීමට ඔබට අවශ්‍ය නැත.

  • RAM හෝ NVM හි දෝෂ පරීක්ෂා කිරීම සඳහා සියලු ආකාර ක්‍රම තිබේ: චෙක්සම්, "ඇවිදීමේ රටා", මෘදුකාංග ඊසීසී යනාදිය. සමාන චෙක්පත්. මෘදුකාංගය තුළ මෙය කිරීම සංකීර්ණ වන අතර, දෝෂ පරීක්‍ෂා කිරීමෙන් දෝෂ සහ අනපේක්ෂිත ගැටලු හඳුන්වා දිය හැකිය.

  • අතිරික්තය භාවිතා කරන්න. ඔබට වාෂ්පශීලී සහ වාෂ්පශීලී නොවන මතකය සමාන "දර්පණ" කොටස් දෙකක ගබඩා කළ හැකිය, එය සැමවිටම සමාන විය යුතුය. සෑම කොටසකටම CRC චෙක්සමයක් අමුණා තිබිය හැකිය.

  • MCU වලින් පිටත බාහිර මතකයන් භාවිතා කිරීමෙන් වළකින්න.

  • හැකි සියලු බාධා කිරීම් / ව්‍යතිරේක සඳහා පෙරනිමි බාධා කිරීම් සේවා පුරුද්දක් / පෙරනිමි ව්‍යතිරේක හසුරුවන්නෙකු ක්‍රියාත්මක කරන්න. ඔබ භාවිතා නොකරන අය පවා. සුපුරුදු පුරුද්ද තමන්ගේම බාධාකාරී ප්‍රභවයක් වසා දැමීම හැර වෙන කිසිවක් නොකළ යුතුය.

  • ආරක්ෂක වැඩසටහන්කරණ සංකල්පය තේරුම් ගෙන වැලඳ ගන්න. මෙයින් අදහස් කරන්නේ න්‍යායට අනුව සිදුවිය නොහැකි අවස්ථාවන්හිදී පවා ඔබේ වැඩසටහනට හැකි සෑම අවස්ථාවකම හැසිරවිය යුතු බවයි. උදාහරණ .

    උසස් තත්ත්වයේ මෙහෙවර-විවේචනාත්මක ස්ථිරාංග මඟින් හැකි තරම් දෝෂ හඳුනාගෙන පසුව ඒවා ආරක්ෂිතව හැසිරවීම හෝ නොසලකා හැරීම සිදු කරයි.

  • දුර්වල ලෙස සඳහන් කළ හැසිරීම මත රඳා පවතින වැඩසටහන් කිසි විටෙකත් ලියන්න එපා. විකිරණ හෝ ඊඑම්අයි නිසා සිදුවන අනපේක්ෂිත දෘඩාංග වෙනස්වීම් සමඟ එවැනි හැසිරීම් විශාල ලෙස වෙනස් වීමට ඉඩ ඇත. ඔබේ වැඩසටහන එවැනි කපටිකම් වලින් තොර බව සහතික කිරීමට ඇති හොඳම ක්‍රමය නම්, ස්ථිතික විශ්ලේෂක මෙවලමක් සමඟ මිස්රා වැනි කේතීකරණ ප්‍රමිතියක් භාවිතා කිරීමයි. මෙය ආරක්ෂිත ක්‍රමලේඛනය සහ දෝෂ ඉවත් කිරීම සඳහා ද උපකාරී වනු ඇත (ඕනෑම ආකාරයක යෙදුමක දෝෂ හඳුනා ගැනීමට ඔබට අවශ්‍ය නොවන්නේ ඇයි?).

  • වැදගත්: ස්ථිතික ගබඩා කාල විචල්‍යයන්ගේ පෙරනිමි අගයන්හි කිසිදු විශ්වාසයක් ක්‍රියාත්මක නොකරන්න. එනම්, .dataහෝ හි පෙරනිමි අන්තර්ගතයන් විශ්වාස නොකරන්න .bss. ආරම්භක ස්ථානය සිට විචල්‍යය සත්‍ය වශයෙන්ම භාවිතා වන ස්ථානය අතර යම් කාලයක් තිබිය හැකිය, RAM දූෂිත වීමට බොහෝ කාලයක් තිබිය හැකිය. ඒ වෙනුවට, වැඩසටහන ලියන්න එවිට එබඳු විචල්‍යයන් පළමු වරට එවැනි විචල්‍යයක් භාවිතා කරන කාලයට පෙර එන්.වී.එම්.

    ප්‍රායෝගිකව මෙයින් අදහස් කරන්නේ විචල්‍යයක් ගොනු විෂය පථයෙන් හෝ එසේ නම් static, ඔබ කිසි විටෙකත් භාවිතා නොකළ යුතු බවයි= ආරම්භ කිරීමට බවයි (හෝ ඔබට හැකි නමුත් එය අර්ථ විරහිත ය, මන්ද ඔබට කෙසේ හෝ වටිනාකම මත විශ්වාසය තැබිය නොහැකි බැවිනි). භාවිතයට පෙර සෑම විටම එය ධාවන වේලාවට සකසන්න. එවැනි විචල්‍යයන් NVM වෙතින් නැවත නැවත යාවත්කාලීන කළ හැකි නම් එසේ කරන්න.

    ඒ හා සමානව C ++ හි ස්ථිතික ගබඩා කාල විචල්‍යයන් සඳහා ඉදිකිරීම්කරුවන් මත රඳා නොසිටින්න. ඉදිකිරීම්කරු (ව) පොදු "සැකසීමේ" පුරුද්දක් අමතන්න, ඔබට පසුව ඇමතුම් යෙදුමෙන් කෙළින්ම ධාවනය වන වේලාවට ඇමතිය හැකිය.

    හැකි නම්, ආරම්භක .dataසහ .bss(සහ C ++ ඉදිකිරීම්කරුවන් අමතන්න) "පිටපත්-පහළ" ආරම්භක කේතය සම්පූර්ණයෙන්ම ඉවත් කරන්න, එවිට ඔබ එවැනි කේතයක් ලිවුවහොත් සම්බන්ධක දෝෂ ඇතිවේ. බොහෝ සම්පාදකයින්ට මෙය මඟ හැරීමට විකල්පයක් ඇත, එය සාමාන්‍යයෙන් "අවම / වේගවත් ආරම්භය" හෝ ඊට සමාන ය.

    මෙයින් අදහස් කරන්නේ ඕනෑම බාහිර පුස්තකාලයක් එවැනි විශ්වාසයක් අඩංගු නොවන පරිදි පරීක්ෂා කළ යුතු බවයි.

  • වැඩසටහන සඳහා ආරක්ෂිත තත්වයක් ක්‍රියාත්මක කිරීම සහ නිර්වචනය කිරීම, විවේචනාත්මක දෝෂයන් ඇති වුවහොත් ඔබ ආපසු හරවනු ඇත.

  • දෝෂ වාර්තාවක් / දෝෂ ලොග් පද්ධතියක් ක්‍රියාත්මක කිරීම සැමවිටම ප්‍රයෝජනවත් වේ.


බූලියන් දූෂිත වීම සමඟ කටයුතු කිරීමේ එක් ක්‍රමයක් (ඔබේ උදාහරණ සබැඳියේ මෙන්) එළිපත්ත සමඟ භාවිතා කිරීමට TRUEසමාන කිරීම විය හැකිය . 0xffffffffPOPCNT
wizzwizz4

x wizzwizz4 0xff අගය යනු වැඩසටහන්ගත නොකළ ෆ්ලෑෂ් සෛලයක පෙරනිමි අගය බැවින් එය නරක අදහසක් සේ පෙනේ.
ලුන්ඩින්

%01010101010101010101010101010101, XOR එහෙනම් POPCNT?
wizzwizz4

1
standard wizzwizz4 හෝ C ප්‍රමිතියට අනුව 0x1 අගය පමණි.
ලුන්ඩින්

1
@ wizzwizz4 ඔබ ඉහත සඳහන් ක්‍රම කිහිපයක් හෝ සියල්ලම භාවිතා කරන්නේ ඇයි (ECC, CRC යනාදිය). එසේ නොමැතිනම් කොස්මික් කිරණ ඔබේ .textකොටසේ තනි බිටු පෙරළීම, දෘෂ්ටි කේතයක් වෙනස් කිරීම හෝ ඒ හා සමාන විය හැකිය.
ලුන්ඩින්

34

එවැනි පරිසරයන් තුළ ශක්තිමත්ව හැසිරෙන වැඩසටහන් ලිවීමට සී භාවිතා කළ හැකි නමුත් බොහෝ ආකාර සම්පාදක ප්‍රශස්තිකරණය අක්‍රිය කර ඇත්නම් පමණි. ප්‍රශස්තිකරණ සම්පාදකයින් නිර්මාණය කර ඇත්තේ අතිරික්ත ලෙස පෙනෙන බොහෝ කේතීකරණ රටා “වඩා කාර්යක්ෂම” ඒවා සමඟ ප්‍රතිස්ථාපනය කිරීම සඳහා x==42වන අතර, සම්පාදකයා විසින් xවෙනත් කිසිවක් රඳවා තබා ගත නොහැකි බව දැනගත් විට ක්‍රමලේඛකයා පරීක්‍ෂා කිරීමට හේතුව හෝඩුවාවක් නොතිබිය හැකිය. xවෙනත් කේතයක් වෙනත් අගයක් සහිතව ක්‍රියාත්මක කිරීම - පද්ධතියට යම් ආකාරයක විද්‍යුත් දෝෂයක් ලැබුනේ නම්, එම අගය රඳවා තබා ගත හැකි එකම ක්‍රමය වනු ඇත.

විචල්යයන් ප්රකාශ volatileකිරීම බොහෝ විට ප්රයෝජනවත් වන නමුත් එය කෝකටත් තෛලයක් නොවිය හැකිය. විශේෂයෙන් වැදගත් වන්නේ, ආරක්ෂිත කේතීකරණයට බොහෝ විට භයානක මෙහෙයුම් සඳහා දෘඩාංග අන්තර් සම්බන්ධතා තිබිය යුතු අතර ඒවා සක්‍රිය කිරීමට පියවර කිහිපයක් අවශ්‍ය වන අතර එම කේතය රටාව භාවිතයෙන් ලිවිය යුතුය:

... code that checks system state
if (system_state_favors_activation)
{
  prepare_for_activation();
  ... code that checks system state again
  if (system_state_is_valid)
  {
    if (system_state_favors_activation)
      trigger_activation();
  }
  else
    perform_safety_shutdown_and_restart();
}
cancel_preparations();

සම්පාදකයෙකු කේතය සාපේක්ෂව වචනානුසාරයෙන් පරිවර්ථනය කරන්නේ නම් සහ පද්ධති තත්වය සඳහා වන සියළුම චෙක්පත් නැවත නැවත සිදු කරන්නේ නම් prepare_for_activation(), ඕනෑම පිළිගත හැකි තනි දෝෂ සිදුවීමකට එරෙහිව පද්ධතිය ශක්තිමත් විය හැකිය, වැඩසටහන් කවුන්ටරය සහ සිරස් අත්තනෝමතික ලෙස දූෂිත කළ හැකි ඒවා පවා. ඇමතුමකින් පසු දෝෂයක් prepare_for_activation()සිදුවුවහොත්, එයින් ඇඟවෙන්නේ සක්‍රිය කිරීම සුදුසු වනු ඇති බවයි ( prepare_for_activation()දෝෂයට පෙර වෙනත් හේතුවක් නොතිබෙනු ඇත). දෝෂය නිසා prepare_for_activation()නුසුදුසු ලෙස කේත ලඟා වීමට හේතු වේ , නමුත් පසුකාලීන දෝෂ සිදුවීම් නොමැත trigger_activation(), වලංගු කිරීමේ පරීක්‍ෂණයකින් තොරව හෝ මුලින් අවලංගු_ පෙර සූදානම ඇමතීමෙන් තොරව කේතයට පසුව ළඟා වීමට ක්‍රමයක් නොමැත [තොගයේ දෝෂ තිබේ නම්, ක්‍රියාත්මක කිරීම ස්ථානයකට යා හැකිය මීට පෙරtrigger_activation()prepare_for_activation()ප්‍රතිලාභ කැඳවූ සන්දර්භයෙන් පසුව , නමුත් ඇමතුම අතර ඇමතුම cancel_preparations()සිදුවිය හැකි අතර එමඟින් දෙවන ඇමතුම හානිකර නොවේ.prepare_for_activation() හාtrigger_activation()

එවැනි කේත සාම්ප්‍රදායික සී වල ආරක්ෂිත විය හැකි නමුත් නවීන සී සම්පාදකයින් සමඟ නොවේ. එවැනි සම්පාදකයින් එවැනි පරිසරයක ඉතා භයානක විය හැකිය, මන්ද ඔවුන් ආක්‍රමණශීලී ලෙස උත්සාහ කරන්නේ යම් නිශ්චිත යාන්ත්‍රණයක් හරහා සිදුවිය හැකි අවස්ථාවන්හිදී අදාළ වන කේත පමණක් ඇතුළත් කිරීමට හා එහි ප්‍රති consequences ල ද මනාව නිර්වචනය කිරීමට ය. අසාර්ථක වීමෙන් පසු ඒවා පිරිසිදු කිරීම සහ පිරිසිදු කිරීම අරමුණු කරගත් කේතය, සමහර අවස්ථාවලදී තත්වය වඩාත් නරක අතට හැරෙනු ඇත. නැවත යථා තත්ත්වයට පත්කිරීමට උත්සාහ කිරීම නිර්වචනය නොකළ හැසිරීමට හේතු වන බව සම්පාදකයා විසින් තීරණය කරන්නේ නම්, එවැනි අවස්ථාවන්හිදී එවැනි ප්‍රකෘතියක් අවශ්‍ය වන තත්වයන් සිදුවිය නොහැකි බව අනුමාන කළ හැකිය, එමඟින් ඔවුන් සඳහා පරීක්ෂා කළ කේතය ඉවත් කරනු ඇත.


6
යථාර්ථවාදීව ගත් කල, ඉදිරිපත් නොකරන -O0හෝ ඊට සමාන ස්විචයක් නොමැති නවීන සම්පාදකයින් කීයක් තිබේද? ඔබ එයට අවසර ලබා දෙන්නේ නම් GCC විසින් අමුතු දේවල් රාශියක් කරනු ඇත , නමුත් ඒවා නොකරන්නැයි ඔබ ඉල්ලා සිටියහොත් එය සාමාන්‍යයෙන් වචනාර්ථයෙන් ද විය හැකිය.
ලියුෂෙන්කෝ

24
කණගාටුයි, නමුත් මෙම අදහස මූලික වශයෙන් භයානක ය. ප්‍රශස්තිකරණය අක්‍රීය කිරීමෙන් මන්දගාමී වැඩසටහනක් ඇතිවේ. නැතහොත්, වෙනත් වචන වලින් කිවහොත්, ඔබට වේගවත් CPU එකක් අවශ්‍ය වේ. එය සිදු වන විට, වේගවත් CPU වේගවත් වන්නේ ඒවායේ ට්‍රාන්සිස්ටර ගේට්ටු මත ආරෝපණ කුඩා වන බැවිනි. මෙය ඔවුන් විකිරණවලට ගොදුරු වීමේ වැඩි අවදානමක් ඇති කරයි. වඩා හොඳ උපායමාර්ගය වන්නේ මන්දගාමී, විශාල චිපයක් භාවිතා කිරීම, එහිදී එක් ෆෝටෝනයක් මඳක් තට්ටු කිරීමට ඇති ඉඩකඩ අඩු වන අතර වේගය නැවත ලබා ගැනීමයි -O2.
MSalters

27
-O0නරක අදහසක් වීමට ද්විතීයික හේතුවක් වන්නේ එය වඩා වැඩකට නැති උපදෙස් විමෝචනය කරන බැවිනි. උදාහරණය: නොබැඳි ඇමතුමක රෙජිස්ටර් සුරැකීමට, ඇමතුම ලබා ගැනීමට, රෙජිස්ටර් යථා තත්වයට පත් කිරීමට උපදෙස් අඩංගු වේ. මේ සියල්ල අසමත් විය හැකිය. එහි නොමැති උපදෙස් අසමත් විය නොහැක.
MSalters

15
-O0නරක අදහසක් වීමට තවත් හේතුවක් : එය ලේඛනයක් වෙනුවට විචල්‍යයන් මතකයේ ගබඩා කිරීමට නැඹුරු වේ. මතකය SEU වලට වඩා වැඩි අවදානමක් ඇති බව දැන් නිශ්චිත නැත, නමුත් පියාසැරි වල දත්ත විවේක වේලාවට වඩා වැඩි අවදානමක් ඇත. නිෂ් less ල දත්ත සංචලනය වළක්වා ගත යුතු අතර, ඒ සඳහා -O2උපකාරී වේ.
MSalters

10
@ එම්එස්එල්ටර්ස්: වැදගත් වන්නේ දත්ත කඩාකප්පල්කාරී ලෙස වැළැක්වීම නොව, අවශ්‍යතා සපුරාලන ආකාරයට පද්ධතියට බාධා කිරීම් හැසිරවීමට හැකි වීමයි. බොහෝ සම්පාදකයින් විසින් සියලු ප්‍රශස්තිකරණය අක්‍රීය කිරීමෙන් ලේඛනයට ලියාපදිංචි වීමේ චලනයන් අතිරික්තයක් සිදු කරයි, එය නරක ය, නමුත් මතකයේ විචල්‍යයන් ගබඩා කිරීම ඒවා ලේඛනයේ තබා ගැනීමට වඩා ප්‍රතිසාධන දෘෂ්ටි කෝණයකින් ආරක්ෂිත වේ. යමෙකුට යම් කොන්දේසියකට අවනත විය යුතු විචල්‍ය දෙකක් මතකයේ තිබේ නම් (උදා: v1=v2+0xCAFEBABEසහ විචල්‍යයන් දෙකේ සියලු යාවත්කාලීන කිරීම් සිදු කරනු ලැබේ ...
සුපර්කැට්

29

මෙය අතිශයින්ම පුළුල් විෂයයකි. මූලික වශයෙන්, ඔබට මතක දූෂණයෙන් සැබවින්ම සුවය ලබා ගත නොහැක, නමුත් ඔබට අවම වශයෙන් ක්ෂණිකව අසමත් වීමට උත්සාහ කළ හැකිය . ඔබට භාවිතා කළ හැකි ශිල්පක්‍රම කිහිපයක් මෙන්න:

  • චෙක්සම් නියත දත්ත . ඔබ සතුව කිසියම් වින්‍යාස දත්ත තිබේ නම් (ඔබ වින්‍යාස කර ඇති දෘඩාංග ලේඛණද ඇතුළුව), ආරම්භයේදී එහි චෙක්සම් ගණනය කර වරින් වර එය සත්‍යාපනය කරන්න. ඔබ නොගැලපීමක් දුටු විට, එය නැවත ආරම්භ කිරීමට හෝ නැවත සැකසීමට කාලයයි.

  • අතිරික්තය සමඟ ගබඩා විචල්යයන් . ඔබ වැදගත් විචල්ය නම් x, එහි වටිනාකම ලියන්න x1, x2සහ x3සහ එය කියවා (x1 == x2) ? x2 : x3.

  • වැඩසටහන් ප්‍රවාහ අධීක්ෂණය ක්‍රියාත්මක කිරීම . ප්‍රධාන ලූපයෙන් හැඳින්වෙන වැදගත් කාර්යයන් / ශාඛා වල අද්විතීය වටිනාකමක් ඇති ගෝලීය ධජයක් XOR. 100% ට ආසන්න පරීක්ෂණ ආවරණයක් සහිත විකිරණ රහිත පරිසරයක වැඩසටහන ක්‍රියාත්මක කිරීමෙන් ඔබට චක්‍රයේ අවසානයේ ධජයේ පිළිගත හැකි අගයන් ලැයිස්තුවක් ලබා දිය යුතුය. අපගමනයන් දුටුවහොත් නැවත සකසන්න.

  • තොග දර්ශකය නිරීක්ෂණය කරන්න . ප්‍රධාන පුඩුවේ ආරම්භයේ දී, තොග දර්ශකය එහි අපේක්ෂිත අගය සමඟ සසඳන්න. අපගමනය මත නැවත සකසන්න.


27

ඔබට උදව් කළ හැකි දේ මුරකරුවෙකි . 1980 ගණන්වලදී කාර්මික පරිගණකකරණයේදී වොච්ඩෝග් බහුලව භාවිතා විය. දෘඩාංග අසමත්වීම් එකල වඩාත් සුලභ විය - තවත් පිළිතුරක් ද එම කාල පරිච්ඡේදය ගැන සඳහන් කරයි.

ඔරලෝසුව යනු ඒකාබද්ධ දෘඩාංග / මෘදුකාංග ලක්ෂණයකි. දෘඩාංග යනු සරල කවුන්ටරයක් ​​වන අතර එය අංකයකින් (1023 කියන්න) බිංදුව දක්වා ගණන් කරයි. TTL හෝ වෙනත් තර්කනයන් භාවිතා කළ හැකිය.

මෘදුකාංගය නිර්මාණය කර ඇත්තේ එක් අත්යවශ්ය පද්ධතිවල නිවැරදි ක්රියාකාරිත්වය අධීක්ෂණය කරන ආකාරයට ය. මෙම ක්‍රියාමාර්ගය නිවැරදිව සම්පුර්ණ වුවහොත් = පරිගණකය හොඳින් ක්‍රියාත්මක වන බව සොයා ගන්නේ නම්, එය කවුන්ටරය 1023 දක්වා නැවත සකසයි.

සමස්ත සැලසුම සාමාන්‍ය තත්වයන් යටතේ දෘඩාංග කවුන්ටරය බිංදුවට ළඟා වීම වළක්වයි. කවුන්ටරය ශුන්‍යයට ළඟා වුවහොත්, කවුන්ටරයේ දෘඩාංග එහි එකම සහ එකම කාර්යය ඉටු කරන අතර සමස්ත පද්ධතියම නැවත සකසයි. ප්‍රතිවිරුද්ධ දෘෂ්ටි කෝණයකින්, ශුන්‍යය 1024 ට සමාන වන අතර කවුන්ටරය නැවත ගණන් කිරීම දිගටම කරගෙන යයි.

මෙම මුරටැඹ මඟින් අමුණා ඇති පරිගණකය නැවත ආරම්භ කිරීම සහතික කරයි. වර්තමාන පරිගණකවල එවැනි කාර්යයක් කළ හැකි දෘඩාංග ගැන මා හුරු නැති බව මම පිළිගත යුතුය. බාහිර දෘඩාංග සඳහා අතුරුමුහුණත් දැන් පෙරට වඩා බෙහෙවින් සංකීර්ණ ය.

ඔරලෝසුවේ ආවේනික අවාසියක් නම්, පද්ධතිය අසමත් වූ දින සිට ඔරලෝසු කවුන්ටරය ශුන්‍ය + නැවත පණගැන්වීමේ වේලාව දක්වා ළඟා නොවීමයි. එම කාලය සාමාන්‍යයෙන් ඕනෑම බාහිර හෝ මානව මැදිහත්වීමකට වඩා කෙටි වන අතර, එම කාල රාමුව සඳහා පරිගණක පාලනයකින් තොරව ඉදිරියට යාමට ආධාරක උපකරණවලට අවශ්‍ය වනු ඇත.


9
ටීටීඑල් සම්මත අයිසී සහිත ද්විමය කවුන්ටර ඔරලෝසු සැබවින්ම 1980 දශකයේ විසඳුමකි. එහෙම කරන්න එපා. අද, බිල්ට් වොච් ඩොග් පරිපථ නොමැතිව වෙළඳපොලේ එක MCU එකක් නොමැත. ඔබ පරික්ෂා කළ යුතු වන්නේ, සාදන ලද ඔරලෝසුවේ තනි ඔරලෝසු ප්‍රභවයක් තිබේ නම් (හොඳයි, බොහෝ දුරට ඉඩ තිබේ) හෝ එය පද්ධතියේ ඔරලෝසුවෙන් එහි ඔරලෝසුව උරුම කර ගන්නේ නම් (නරක).
ලුන්ඩින්

1
නැතහොත් මුරකාවල් FPGA එකකින්
nos

2
අහම්බෙන් කාවැද්දූ ප්‍රොසෙසර වල තවමත් බහුලව භාවිතා වේ.
ග්‍රැහැම්

5
Et පීටර් මෝර්ටෙන්සන් මෙම ප්‍රශ්නයට සෑම පිළිතුරක් සඳහාම ඔබේ සංස්කරණ කටයුතු කරුණාකර නවත්වන්න. මෙය විකිපීඩියාව නොවන අතර එම සබැඳි ප්‍රයෝජනවත් නොවේ (තවද විකිපීඩියාව කෙසේ හෝ සොයා ගන්නේ කෙසේදැයි සෑම දෙනාම දන්නා බව මට විශ්වාසයි ...). ඔබ මාතෘකාව නොදන්නා නිසා ඔබගේ බොහෝ සංස්කරණයන් වැරදිය. මම ඔබේ වැරදි සංස්කරණයන් හමු වන විට ඒවා නැවත සකස් කරමි. ඔබ මෙම නූල වඩා හොඳට හරවන්නේ නැත, නමුත් වඩාත් නරක ය. සංස්කරණය කිරීම නවත්වන්න.
ලුන්ඩින්

ජැක් ගැන්ස්ලේට ඔරලෝසු පිළිබඳ හොඳ ලිපියක් ඇත: ganssle.com/watchdogs.htm
ඊගෝර් ස්කොචින්ස්කි

23

මෙම පිළිතුර ඔබ සිතන්නේ අවම පිරිවැයක් හෝ වේගවත් පද්ධතියක් නිවැරදිව, ඉහළින් හා ඉහළින් ක්‍රියාත්මක වන පද්ධතියක් තිබීම ගැන ය; විකිරණශීලී දේවල් සමඟ සෙල්ලම් කරන බොහෝ දෙනා වේගය / පිරිවැය ඉක්මවා නිවැරදි බව / ආරක්ෂාව අගය කරති

ඔබට කළ හැකි දෘඩාංග වෙනස්වීම් කිහිපයක් පුද්ගලයන් විසින් යෝජනා කර ඇත (හොඳයි - මේ වන විටත් පිළිතුරු වල හොඳ දේවල් රාශියක් ඇති අතර මම ඒ සියල්ල පුනරාවර්තනය කිරීමට අදහස් නොකරමි), තවත් සමහරු අතිරික්තය යෝජනා කර ඇත (ප්‍රතිපත්තිමය වශයෙන් විශිෂ්ටයි), නමුත් මම හිතන්නේ නැහැ එම අතිරික්තය ප්‍රායෝගිකව ක්‍රියාත්මක වන්නේ කෙසේදැයි යමෙක් යෝජනා කර ඇත. ඔබ අසමත් වන්නේ කෙසේද? යමක් වැරදී ඇති විට ඔබ දන්නේ කෙසේද? බොහෝ තාක්ෂණයන් සෑම දෙයක්ම ක්‍රියාත්මක වන පදනම මත ක්‍රියාත්මක වන අතර අසාර්ථකත්වය සමඟ කටයුතු කිරීම ඉතා දුෂ්කර දෙයකි. කෙසේ වෙතත්, පරිමාණය අපේක්ෂා කරන අසාර්ථකත්වය සඳහා නිර්මාණය කර ඇති සමහර බෙදා හරින ලද පරිගණක තාක්ෂණයන් (ප්‍රමාණවත් තරම් ප්‍රමාණයක් තිබියදීත්, එක් නෝඩයක් සඳහා ඕනෑම MTBF සමඟ බොහෝ දෙනෙකුගේ එක් නෝඩයක් අසමත් වීම නොවැළැක්විය හැකිය); ඔබේ පරිසරය සඳහා මෙය භාවිතා කළ හැකිය.

මෙන්න අදහස් කිහිපයක්:

  • ඔබගේ සම්පූර්ණ දෘඩාංග අනුරූප nවේලාවන් ( n2 ට වඩා වැඩි හා වඩා අමුතු), සහ සෑම දෘඩාංග මූලද්‍රව්‍යයක්ම එකිනෙකාගේ දෘඩාංග මූලද්‍රව්‍ය සමඟ සන්නිවේදනය කළ හැකි බවට සහතික වන්න. ඒ සඳහා ඊතර්නෙට් යනු එක් පැහැදිලි ක්‍රමයකි, නමුත් වඩා හොඳ ආරක්ෂාවක් ලබා දෙන තවත් බොහෝ සරල මාර්ග තිබේ (උදා: CAN). පොදු සංරචක අවම කිරීම (බල සැපයුම් පවා). උදාහරණයක් ලෙස විවිධ ස්ථානවල ADC යෙදවුම් නියැදීම මෙයින් අදහස් විය හැකිය.

  • ඔබගේ යෙදුම් තත්වය තනි ස්ථානයක ඇති බවට සහතික වන්න, උදා: සීමිත රාජ්‍ය යන්ත්‍රයක. ස්ථායී ආචයනය වළක්වන්නේ නැතත් මෙය සම්පූර්ණයෙන්ම RAM මත පදනම් විය හැකිය. මේ අනුව එය ස්ථාන කිහිපයක ගබඩා වේ.

  • තත්වය වෙනස් කිරීම සඳහා ගණපූරණ ප්‍රොටෝකෝලයක් අනුගමනය කරන්න. බලන්න මාලාවක් සඳහා උදාහරණ වේ. ඔබ C ++ හි වැඩ කරන බැවින් මේ සඳහා ප්‍රසිද්ධ පුස්තකාල තිබේ. එෆ්එස්එම් හි වෙනස්කම් සිදු වන්නේ බහුතර නෝඩ් එකඟ වූ විට පමණි. ඔබම රෝල් කරනවාට වඩා ප්‍රොටෝකෝලා තොගය සහ ගණපූරණය සඳහා දන්නා හොඳ පුස්තකාලයක් භාවිතා කරන්න, නැතහොත් ගණපූරණ ප්‍රොටෝකෝලය එල්ලෙන විට අතිරික්තය පිළිබඳ ඔබේ සියලු හොඳ වැඩ අපතේ යනු ඇත.

  • ඔබේ එෆ්එස්එම් චෙක්සම් (උදා: සීආර්සී / එස්එච්ඒ) සහතික කර, සීආර්සී / එස්එච්ඒ එෆ්එස්එම් තුළම ගබඩා කර තබන්න (පණිවිඩය සම්ප්‍රේෂණය කිරීම සහ පණිවිඩ පරික්ෂා කිරීම). මෙම චෙක්සම්, චෙක්සම් එන පණිවිඩ වලට එරෙහිව නිරන්තරයෙන් ඔවුන්ගේ එෆ්එස්එම් පරීක්ෂා කිරීමට නෝඩ් ලබා ගන්න, සහ ඒවායේ චෙක්සම් ගණපූරණයෙහි චෙක්සමයට ගැලපේදැයි පරීක්ෂා කරන්න.

  • හැකි තරම් වෙනත් අභ්‍යන්තර චෙක්පත් ඔබේ පද්ධතියට ගොඩනඟා, ඒවායේ අසාර්ථක නැවත පණගැන්වීම් හඳුනාගන්නා නෝඩ් සාදන්න (මෙය ඔබට ප්‍රමාණවත් තරම් නෝඩ් තිබේ නම් අඩක් වැඩ කිරීමට වඩා හොඳය). නැවත ආරම්භ කිරීමේදී නැවත පණගැන්වීමේදී ගණපූරණයෙන් ඉවත් වීමට ඔවුන්ට ඉඩදීමට උත්සාහ කිරීම. නැවත පණගැන්වීමේදී ඔවුන් මෘදුකාංග රූපය පරීක්ෂා කර (සහ ඔවුන් පටවන වෙනත් ඕනෑම දෙයක්) ගණපූරණයට නැවත හඳුන්වා දීමට පෙර සම්පූර්ණ RAM පරීක්ෂණයක් කරන්න.

  • ඔබට සහාය වීමට දෘඩාංග භාවිතා කරන්න, නමුත් ප්‍රවේශමෙන් කරන්න. නිදසුනක් ලෙස, ඔබට ECC RAM ලබා ගත හැකි අතර, ECC දෝෂ නිවැරදි කිරීම සඳහා නිතිපතා කියවීම / ලිවීම (සහ දෝෂය නිවැරදි කළ නොහැකි නම් කලබල වන්න). කෙසේ වෙතත් (මතකයෙන්) ස්ථිතික RAM අයනීකරණ විකිරණයට වඩා ඉවසා දරා සිටින්නේ ඩ්‍රෑම් පළමු ස්ථානයට වඩා බැවින් ස්ථිතික ඩ්‍රෑම් භාවිතා කිරීම වඩා හොඳ විය හැකිය. 'මම නොකරන දේ' යටතේ පළමු කරුණද බලන්න.

එක් දිනක් තුළ ඔබට කිසියම් නෝඩයක් අසමත් වීමට 1% ක ඉඩක් ඇති බව කියමු, තවද ඔබට අසාර්ථකත්වය මුළුමනින්ම ස්වාධීන කළ හැකි යැයි මවා පෙන්වමු. නෝඩ් 5 ක් සමඟ, ඔබට එක් දිනක් තුළ අසමත් වීමට තුනක් අවශ්‍ය වේ, එය .00001% අවස්ථාවකි. තවත්, හොඳයි, ඔබට අදහස ලැබෙනවා.

මම නොකරන දේවල්:

  • ආරම්භ කිරීමට ගැටලුව නොමැති වීමේ වටිනාකම අවතක්සේරු කරන්න. බර ගැන සැලකිලිමත් නොවන්නේ නම්, ඔබේ උපාංගය වටා ඇති විශාල ලෝහ කැබැල්ලක් ක්‍රමලේඛකයින් කණ්ඩායමකට ඉදිරිපත් කිරීමට වඩා බෙහෙවින් ලාභදායී සහ විශ්වාසදායක විසඳුමක් වනු ඇත. ඊඑම්අයි හි යෙදවුම් ඩිටෝ ඔප්ටිකල් සම්බන්ධ කිරීම ගැටළුවක් වේ.

  • ඔබේම ඇල්ගොරිතම රෝල් කරන්න . මිනිස්සු මීට පෙර මේ දේවල් කර ඇත. ඔවුන්ගේ වැඩ භාවිතා කරන්න. වැරදි ඉවසීම සහ බෙදා හරින ලද ඇල්ගොරිතම දුෂ්කර ය. හැකි සෑම තැනකම වෙනත් පුද්ගලයින්ගේ වැඩ භාවිතා කරන්න.

  • ඔබ තවත් අසාර්ථකත්වයන් හඳුනාගනු ඇතැයි යන බොළඳ බලාපොරොත්තුව තුළ සංකීර්ණ සම්පාදක සැකසුම් භාවිතා කරන්න. ඔබ වාසනාවන්ත නම්, ඔබට තවත් අසාර්ථකත්වයන් හඳුනාගත හැකිය. බොහෝ දුරට, ඔබ අඩු පරීක්ෂාවට ලක් කර ඇති සම්පාදකයා තුළ කේත-මාර්ගයක් භාවිතා කරනු ඇත, විශේෂයෙන් ඔබ එය පෙරළා ඇත්නම්.

  • ඔබේ පරිසරය තුළ පරීක්ෂා නොකළ තාක්ෂණික ක්‍රම භාවිතා කරන්න. ඉහළ උපයෝජ්‍යතා මෘදුකාංගයක් ලියන බොහෝ දෙනෙකුට ඔවුන්ගේ එච්.ඒ. ඉල්ලුමට නිරන්තරයෙන් අසමත් වීමේ වාසනාවන්ත තත්වයේ ඔබ සිටී. එබැවින් සෑම තාක්ෂණයක්ම පරීක්ෂා කර බලා එහි යෙදුම MTBF හඳුන්වා දීම සඳහා ඇති සංකීර්ණතාව ඉක්මවා යන ප්‍රමාණයකින් වැඩි දියුණු කරන බවට සහතික වන්න (සංකීර්ණත්වය සමඟ දෝෂ පැමිණේ). විශේෂයෙන් මෙය මගේ උපදෙස් නැවත ගණපූරණය ඇල්ගොරිතම ආදිය සඳහා යොදන්න.


2
මෙහෙවර-විවේචනාත්මක යෙදුම් සඳහා ඊතර්නෙට් භාවිතා කිරීම හොඳ අදහසක් නොවේ. I2C ද PCB වලින් පිටත නොවේ. CAN වැනි රළු දෙයක් ඊට වඩා සුදුසු වනු ඇත.
ලුන්ඩින්

1
Und ලුන්ඩින් ෆෙයාර් පොයින්ට්, දෘෂ්‍යමය වශයෙන් සම්බන්ධ වූ ඕනෑම දෙයක් (ඊතර්නෙට් ඇතුළුව) හරි විය යුතුය.
abligh

1
භෞතික මාධ්‍ය යනු ඊතර්නෙට් නුසුදුසු වීමට හේතුව නොවේ, නමුත් නිශ්චිත කාලීන කාලීන හැසිරීම් වල lack නතාවය. තරමක් විශ්වාසදායක ඊතර්නෙට් ලබා දීමට වර්තමානයේ ක්‍රම තිබේ යැයි මම සිතුවත්, මම එය පැරණි පුරුද්දෙන් බැහැරව වාණිජ / සෙල්ලම් ඉලෙක්ට්‍රොනික උපකරණ සමඟ කාණ්ඩගත කරමි.
ලුන්ඩින්

1
Und ලුන්ඩින් එය සාධාරණ කරුණකි, නමුත් මම එය RAFT ක්‍රියාත්මක කිරීම සඳහා භාවිතා කිරීමට යෝජනා කරන පරිදි, කෙසේ හෝ ඇල්ගොරිතමයේ (න්‍යායාත්මකව) නිර්ණායක නොවන තත්‍ය කාලීන හැසිරීම් පවතිනු ඇත (උදා: සමගාමී නායක මැතිවරණ ප්‍රති result ලයක් ලෙස නැවත තේරී පත්වීමේ ප්‍රති CS ලයක් ලෙස CSMA / සංයුක්ත තැටිය). දැඩි තාත්වික හැසිරීම් අවශ්‍ය නම්, මගේ පිළිතුරට ඊතර්නෙට් වලට වඩා ගැටලු ඇති බව තර්ක කළ හැකිය (සහ මගේ පිළිතුරේ ප්‍රධාන කොටසේ සටහන් කර ඇත්තේ 'නිවැරදි' බොහෝ විට 'වේගවත්' වියදමින් විය හැකි බවයි). මම ඔබේ අදහස නැවත ඇතුළත් කළ හැකිය.
abligh

1
Und ලුන්ඩින්: අසමමුහුර්ත අංගයන් ඇතුළත් වන කිසිදු පද්ධතියක් සම්පූර්ණයෙන් නිර්ණය කළ නොහැකිය. මෘදුකාංග ප්‍රොටෝකෝල සුදුසු මෝස්තරයකින් සකසා ඇති අතර උපාංගවලට අද්විතීය හැඳුනුම්පත් තිබේ නම් සහ උපාංග ගණනට දන්නා සීමාවක් තිබේ නම් (වැඩි උපාංග, විශාල) දෘඩාංග බාධා නොමැති අවස්ථාවල ඊතර්නෙට් හි නරකම හැසිරීම සීමා කළ හැකිය. නැවත උත්සාහ කිරීමේ නරකම අවස්ථාව).
සුපර් කැට්

23

ඔබ විශේෂයෙන් මෘදුකාංග විසඳුම් ඉල්ලා සිටින නිසාත්, ඔබ C ++ භාවිතා කරන නිසාත්, ඔබේම ආරක්ෂිත දත්ත සමුදායන් සෑදීම සඳහා ක්‍රියාකරු අධි බර පැටවීම භාවිතා නොකරන්නේ ඇයි? උදාහරණයක් වශයෙන්:

uint32_t(සහ double, int64_tආදිය) භාවිතා කරනවා වෙනුවට, SAFE_uint32_tuint32_t බහු (අවම 3) අඩංගු ඔබේම දෑ සාදන්න. ඉටු කිරීමට ඔබට අවශ්‍ය සියලුම මෙහෙයුම් (* + - / << >> = ==! පෙර සහ පසු දෙකම, සියලු අභ්‍යන්තර අගයන් ගැලපේදැයි පරීක්ෂා කරන්න. අගයන් නොගැලපේ නම්, ඔබට වැරදි දේ වඩාත් පොදු අගය සමඟ යාවත්කාලීන කළ හැකිය. වඩාත් පොදු වටිනාකමක් නොමැති නම්, දෝෂයක් ඇති බව ඔබට ආරක්ෂිතව දැනුම් දිය හැකිය.

ALU, රෙජිස්ටර්, RAM, හෝ බස් රථයක දූෂණය සිදුවී ඇත්ද යන්න ගැටළුවක් නොවේ, ඔබට තවමත් බහුවිධ උත්සාහයන් සහ දෝෂ හඳුනා ගැනීමට හොඳ අවස්ථාවක් තිබේ. කෙසේ වෙතත් මෙය ක්‍රියාත්මක වන්නේ ඔබට ප්‍රතිස්ථාපනය කළ හැකි විචල්‍යයන් සඳහා පමණක් බව සලකන්න - නිදසුනක් ලෙස ඔබේ තොග දර්ශකය තවමත් අවදානමට ලක් වේ.

පැති කතාවක්: මම පැරණි ARM චිපයක් මතද එවැනිම ගැටලුවකට මුහුණ දුන්නෙමි. එය මෙවලම් කට්ටලයක් බවට පත් වූ අතර එය GCC හි පැරණි අනුවාදයක් භාවිතා කළ අතර, අප භාවිතා කළ විශේෂිත චිපය සමඟ එක්ව, සමහර විට දූෂිත අගයන් ශ්‍රිතයන් වෙත සම්ප්‍රේෂණය වන යම් යම් දාරවල දෝෂයක් ඇති කළේය. ගුවන්විදුලි ක්‍රියාකාරිත්වයට දොස් පැවරීමට පෙර ඔබගේ උපාංගයට කිසිදු ගැටළුවක් නොමැති බවට වග බලා ගන්න, ඔව්, සමහර විට එය සම්පාදක දෝෂයකි =)


1
මෙම යෝජනා කිහිපයකින් දූෂණය හඳුනා ගැනීම සඳහා සමාන 'බහු-බිට් සනීපාරක්ෂක චෙක්පත්' මානසිකත්වයක් ඇත, ආරක්ෂිත-විවේචනාත්මක අභිරුචි දත්ත
සමුදායන්

2
සෑම අතිරික්ත නෝඩයක්ම විවිධ කණ්ඩායම් විසින් නිර්මාණය කර සංවර්ධනය කරන ලද පද්ධති ලෝකයේ ඇත, බේරුම්කරුවෙකු සමඟ ඔවුන් එකම විසඳුම් මත අහම්බෙන් පදිංචි නොවූ බවට වග බලා ගන්න. ඒ ආකාරයෙන් ඔබ සියල්ලන්ම එකම දෝෂයක් සඳහා බැස නොයන අතර සමාන අස්ථිරයන් සමාන අසාර්ථක ප්‍රකාරයන් නොපෙන්වයි.
jwdonahue

16

වියාචනය: මම විකිරණශීලීතා වෘත්තිකයෙක් හෝ මේ ආකාරයේ යෙදුමක් සඳහා වැඩ කර නැත. නමුත් මම තරමක් දුරට සම්බන්ධ වී ඇති (එකම ගැටළුව, විවිධ අරමුණු) විවේචනාත්මක දත්තවල දිගුකාලීන ලේඛනාගාරය සඳහා මෘදු දෝෂ සහ අතිරික්තතාව පිළිබඳ වැඩ කළෙමි.

මගේ මතය අනුව විකිරණශීලතාවයේ ප්‍රධාන ගැටළුව වන්නේ විකිරණශීලතාවයට බිටු මාරු කළ හැකි බැවින් විකිරණශීලතාවයට ඕනෑම ඩිජිටල් මතකයක් අවුල් කළ හැකි බවයි. මෙම දෝෂ සාමාන්‍යයෙන් මෘදු දෝෂ , බිට් කුණුවීම යනාදිය ලෙස හැඳින්වේ .

ප්‍රශ්නය නම්: ඔබේ මතකය විශ්වාස කළ නොහැකි විට විශ්වසනීයව ගණනය කරන්නේ කෙසේද?

මෘදු දෝෂවල වේගය සැලකිය යුතු ලෙස අඩු කිරීම සඳහා (එය බොහෝ දුරට මෘදුකාංග පදනම් කරගත් විසඳුම් වන බැවින් පරිගණක පොදු කාර්යයේ වියදමින්), ඔබට පහත දෑ කළ හැකිය:

  • හොඳ පැරණි අතිරික්ත යෝජනා ක්‍රමය මත විශ්වාසය තබන්න , වඩාත් නිශ්චිතවම වඩාත් කාර්යක්ෂම දෝෂ නිවැරදි කිරීමේ කේත (එකම අරමුණ, නමුත් අඩු අතිරික්තයක් සහිතව ඔබට වැඩි බිටු අය කර ගත හැකි වන පරිදි දක්ෂ ඇල්ගොරිතම). මෙය සමහර විට (වැරදියට) චෙක්සමිං ලෙසද හැඳින්වේ. මේ ආකාරයේ විසඳුමක් සමඟ, ඔබට ඕනෑම වේලාවක ඔබේ වැඩසටහනේ සම්පූර්ණ තත්වය ප්‍රධාන විචල්‍යයක / පන්තියක (හෝ ව්‍යුහයක්?) ගබඩා කර, ECC ගණනය කර, කිසිවක් කිරීමට පෙර ECC නිවැරදි දැයි පරීක්ෂා කර බැලිය යුතුය. ක්ෂේත්ර අලුත්වැඩියා නොකරන්න. කෙසේ වෙතත් මෙම විසඳුම මඟින් ඔබේ මෘදුකාංගයට වැඩ කළ හැකි බවට සහතික නොවේ (සරලවම එය නිවැරදිව ක්‍රියා කරයි, නැතිනම් වැඩ කිරීම නවත්වයි, මන්ද යම් දෙයක් වැරදී ඇත්දැයි ECC ඔබට පැවසිය හැකි අතර, මේ අවස්ථාවේ දී ඔබට ඔබේ මෘදුකාංගය නැවැත්විය හැකිය ව්‍යාජ ප්‍රති .ල ලබා නොගන්න).

  • හෝ ඔබට ඔරොත්තු දෙන ඇල්ගොරිතම දත්ත ව්‍යුහයන් භාවිතා කළ හැකිය, මෘදු දෝෂ තිබියදීත් ඔබේ වැඩසටහන නිවැරදි ප්‍රති results ල ලබා දෙන බවට සහතික වන, යම් සීමාවක් දක්වා. මෙම ඇල්ගොරිතම ඊසීසී යෝජනා ක්‍රම සමඟ පොදු ඇල්ගොරිතම ව්‍යුහයන්ගේ මිශ්‍රණයක් ලෙස දැකිය හැකිය, නමුත් මෙය ඊට වඩා බෙහෙවින් ඔරොත්තු දීමේ හැකියාව ඇත, මන්දයත් ප්‍රතිරෝධීතා යෝජනා ක්‍රමය ව්‍යුහයට තදින් බැඳී ඇති නිසා ඔබට අතිරේක ක්‍රියා පටිපාටි සංකේත කිරීමට අවශ්‍ය නොවේ ECC පරීක්ෂා කිරීමට, සාමාන්‍යයෙන් ඒවා බොහෝ වේගවත් ය. මෙම ව්‍යුහයන් ඔබේ වැඩසටහන ඕනෑම කොන්දේසියක් යටතේ ක්‍රියාත්මක වන බව සහතික කිරීමට ක්‍රමයක් සපයයි. අමතර ආරක්‍ෂාව සඳහා අතිරික්ත / ඊසීසී යෝජනා ක්‍රමය සමඟ ඔබට මෙම ඔරොත්තු දෙන ව්‍යුහයන් මිශ්‍ර කළ හැකිය (නැතහොත් ඔබේ වඩාත්ම වැදගත් දත්ත ව්‍යුහයන් ඔරොත්තු දෙන ලෙස කේතනය කරන්න, සහ ඉතිරිය, ප්‍රධාන දත්ත ව්‍යුහයන්ගෙන් ඔබට නැවත ගණනය කළ හැකි වියදම් කළ හැකි දත්ත,

ඔරොත්තු දෙන දත්ත ව්‍යුහයන් පිළිබඳව ඔබ උනන්දුවක් දක්වන්නේ නම් (එය ඇල්ගොරිතම හා අතිරික්ත ඉංජිනේරු විද්‍යාවේ මෑත, නමුත් ආකර්ෂණීය, නව ක්ෂේත්‍රයකි), පහත සඳහන් ලේඛන කියවීමට මම ඔබට උපදෙස් දෙමි:

  • ගුසෙප් එෆ්. ඉතාලියානෝ, යුනිවර්සිටා ඩි රෝමා විසින් "ටෝර් වර්ගටා"

  • ක්‍රිස්ටියානෝ, පී., ඩෙමයින්, ඊඩී, සහ කිෂෝර්, එස්. (2011). ආකලන ඉහළින් ඇති අලාභ රහිත දෝෂ-ඉවසිය හැකි දත්ත ව්‍යුහයන්. ඇල්ගොරිතම සහ දත්ත ව්‍යුහයන්හි (පි. 243-254 පි.) ස්ප්‍රින්ගර් බර්ලින් හයිඩෙල්බර්ග්.

  • ෆෙරාරෝ-පෙට්‍රිලෝ, යූ., ග්‍රැන්ඩෝනි, එෆ්., සහ ඉතාලියානෝ, ජීඑෆ් (2013). මතක දෝෂ වලට ඔරොත්තු දෙන දත්ත ව්‍යුහයන්: ශබ්ද කෝෂ පිළිබඳ පර්යේෂණාත්මක අධ්‍යයනයක්. පර්යේෂණාත්මක ඇල්ගොරිතම පිළිබඳ ජර්නලය (JEA), 18, 1-6.

  • ඉතාලියානෝ, ජීඑෆ් (2010). ඔරොත්තු දෙන ඇල්ගොරිතම සහ දත්ත ව්‍යුහයන්. ඇල්ගොරිතම සහ සංකීර්ණතාවයේ (පි. 13-24 පි.) ස්ප්‍රින්ගර් බර්ලින් හයිඩෙල්බර්ග්.

ඔබ ඔරොත්තු දීමක් දත්ත ව්යුහ ක්ෂේත්රයේ පිළිබඳ වැඩි දැන ගැන සැලකිලිමත් වන්නේ නම්, ඔබ ක්රියා Checkout හැකි Giuseppe එෆ් Italiano (සහ ආශ්රේයන් හරහා ඔබේ මාර්ගය වැඩ) සහ වැරදි-RAM ආකෘතිය (Finocchi et al හඳුන්වා 2005;. Finocchi සහ ඉතාලියානෝ 2008).

/ සංස්කරණය කරන්න: ප්‍රධාන වශයෙන් RAM මතකය සහ දත්ත ගබඩා කිරීම සඳහා මෘදු දෝෂ වලින් වැළැක්වීම / ප්‍රකෘතිමත් වීම මම නිදර්ශනය කළෙමි, නමුත් මම ගණනය කිරීමේ (CPU) දෝෂ ගැන කතා කළේ නැත . දත්ත සමුදායන් වැනි පරමාණුක ගනුදෙනු භාවිතා කිරීම පිළිබඳව දැනටමත් පෙන්වා දී ඇති වෙනත් පිළිතුරු, එබැවින් මම තවත් සරල ක්‍රමයක් යෝජනා කරමි: අතිරික්තය සහ බහුතර ඡන්දය .

අදහස නම්, ඔබ කළ යුතු එක් එක් ගණනය කිරීම් සඳහා එකම ගණනය කිරීම් x ගුණයක් කර , ප්‍රති result ලය x විවිධ විචල්‍යයන්හි ගබඩා කරන්න (x> = 3 සමඟ). එවිට ඔබට ඔබේ x විචල්‍යයන් සංසන්දනය කළ හැකිය :

  • ඔවුන් සියල්ලන්ම එකඟ වන්නේ නම්, ගණනය කිරීමේ දෝෂයක් නොමැත.
  • ඔවුන් එකඟ නොවන්නේ නම්, නිවැරදි අගය ලබා ගැනීම සඳහා ඔබට බහුතර ඡන්දයක් භාවිතා කළ හැකි අතර, මෙයින් අදහස් කරන්නේ ගණනය කිරීම අර්ධ වශයෙන් දූෂිත වී ඇති හෙයින්, ඉතිරිය හරි දැයි පරීක්ෂා කිරීමට ඔබට පද්ධති / වැඩසටහන් රාජ්‍ය ස්කෑන් පරීක්ෂණයක් කළ හැකිය.
  • බහුතර ඡන්දයෙන් ජයග්‍රාහකයෙකු තීරණය කළ නොහැකි නම් (සියලු x අගයන් වෙනස් වේ), එය අසාර්ථක ආරක්ෂිත ක්‍රියා පටිපාටිය ක්‍රියාත්මක කිරීමට ඔබට කදිම සං signal ාවකි (නැවත ආරම්භ කිරීම, පරිශීලකයාට අනතුරු ඇඟවීමක් කිරීම ආදිය).

ECC (ප්‍රායෝගිකව O (1)) හා සසඳන විට මෙම අතිරික්ත යෝජනා ක්‍රමය ඉතා වේගවත් වන අතර ඔබට අනාරක්ෂිත වීමට අවශ්‍ය වූ විට එය පැහැදිලි සං signal ාවක් ලබා දෙයි . බහුතර ඡන්ද (පාහේ) ද දූෂිත ප්රතිදානය නිෂ්පාදනය කවදාවත් සහතික සහ ද සුළු ගණනය වැරදි ගොඩ x ගණනය එම ප්රතිදානය ලබා දෙන සම්භාවිතාව ඉතා කුඩා (නිසා හැකි නිමැවුම් විශාල ප්රමාණයක් ඇති බැවින්, එය පාහේ කළ නොහැකි දෙයක්, අහඹු ලෙස 3 ගුණයක් සමාන වේ, x> 3 නම් ඊටත් වඩා අඩු අවස්ථා).

එබැවින් බහුතර ඡන්දයෙන් ඔබ දූෂිත නිමැවුමෙන් ආරක්ෂා වන අතර අතිරික්ත x == 3 සමඟ ඔබට 1 දෝෂයක් නැවත ලබා ගත හැකිය (x == 4 සමඟ එය අයකර ගත හැකි දෝෂ 2 ක් වනු ඇත. ආදිය - නිශ්චිත සමීකරණය යනු nb_error_recoverable == (x-2)x යනු අංකය වේ බහුතර ඡන්දයෙන් අයකර ගැනීමට ඔබට අවම වශයෙන් එකඟතා ගණනය කිරීම් 2 ක් අවශ්‍ය වන නිසා ගණනය කිරීම් පුනරාවර්තන).

මෙහි ඇති අවාසිය නම් ඔබට එක් වරක් වෙනුවට x වාරයක් ගණනය කිරීම අවශ්‍ය වන බැවින් ඔබට අමතර ගණනය කිරීමේ පිරිවැයක් ඇත, නමුත් රේඛීය සංකීර්ණතාව නිසා අසමමිතික ලෙස ඔබ ලබා ගන්නා ප්‍රතිලාභ සඳහා ඔබට බොහෝ දේ අහිමි නොවේ. බහුතර ඡන්දයක් කිරීමට වේගවත් ක්‍රමයක් වන්නේ අරාව මත මාදිලිය ගණනය කිරීමයි, නමුත් ඔබට මධ්‍ය පෙරණයක් ද භාවිතා කළ හැකිය.

එසේම, ගණනය කිරීම් නිවැරදිව සිදු කර ඇත්දැයි තහවුරු කර ගැනීමට ඔබට අවශ්‍ය නම්, ඔබට ඔබේම දෘඩාංගයක් සාදා ගත හැකි නම්, ඔබේ උපාංගය x CPU සමඟ ගොඩනගා ගත හැකි අතර පද්ධතිය වයර් කරන්න එවිට ගණනය කිරීම් x CPU හරහා ස්වයංක්‍රීයව අනුපිටපත් කර බහුතර ඡන්දයකින් යාන්ත්‍රිකව අවසානයේ (උදාහරණයක් ලෙස AND / OR ගේට්ටු භාවිතා කිරීම). මෙය බොහෝ විට ගුවන් යානා සහ මෙහෙයුම් තීරණාත්මක උපාංගවල ක්‍රියාත්මක වේ ( ත්‍රිත්ව මොඩියුලර් අතිරික්තය බලන්න ). මේ ආකාරයෙන්, ඔබට කිසිදු පරිගණක පොදු කාර්යයක් නොතිබෙනු ඇත (අතිරේක ගණනය කිරීම් සමාන්තරව සිදු කෙරෙන බැවින්), සහ ඔබට මෘදු දෝෂ වලින් තවත් ආරක්ෂිත තට්ටුවක් ඇත (ගණනය කිරීමේ අනුපිටපත සහ බහුතර ඡන්දය සෘජුවම කළමනාකරණය කරනු ලබන්නේ දෘඩාංග මගින් මිස මෘදුකාංගය - වැඩසටහනක් හුදෙක් මතකයේ ගබඩා කර ඇති බැවින් වඩාත් පහසුවෙන් දූෂිත විය හැකිය ...).


9

කිසිවෙකු සඳහන් කර නැති එක් කරුණක්. ඔබ කියන්නේ ඔබ GCC හි සංවර්ධනය වෙමින් ARM වෙත හරස් සම්පාදනය කරන බවයි. නොමිලේ RAM, නිඛිල ප්‍රමාණය, දර්ශක ප්‍රමාණය, යම් මෙහෙයුමක් කිරීමට කොපමණ කාලයක් ගතවේද, පද්ධතිය අඛණ්ඩව ක්‍රියාත්මක වන්නේ කොපමණ කාලයක්ද, හෝ ඒ හා සමාන විවිධ දේවල් පිළිබඳව උපකල්පන කරන කේතයක් ඔබ සතුව නොමැති බව ඔබ දන්නේ කෙසේද? මෙය ඉතා පොදු ගැටළුවකි.

පිළිතුර සාමාන්‍යයෙන් ස්වයංක්‍රීය ඒකක පරීක්ෂාවකි. සංවර්ධන පද්ධතියේ කේතය ක්‍රියාත්මක කරන පරීක්ෂණ පටි ලියන්න, ඉන්පසු ඉලක්කගත පද්ධතිය මත එකම පරීක්ෂණ පටි ධාවනය කරන්න. වෙනස්කම් සොයා බලන්න!

ඔබගේ කාවැද්දූ උපාංගයේ දෝෂ සඳහාද පරීක්ෂා කරන්න. "මෙය බිඳ වැටෙන බැවින් මෙය නොකරන්න, එබැවින් එම සම්පාදක විකල්පය සක්‍රීය කරන්න, එවිට සම්පාදකයා එය වටා ක්‍රියා කරනු ඇත" යන්න ගැන යමක් ඇති බව ඔබට පෙනී යනු ඇත.

කෙටියෙන් කිවහොත්, ඔබ බිඳ වැටීමට බොහෝ දුරට ඉඩ ඇත්තේ ඔබේ කේතයේ ඇති දෝෂයන් ය. මෙය එසේ නොවන බව ඔබ තරයේ විශ්වාස කරන තුරු, තවත් ව්‍යාකූල අසාර්ථක ක්‍රම ගැන කරදර නොවන්න.


1
ඇත්ත වශයෙන්ම, ප්‍රශ්නයේ පරීක්ෂණයක කොතැනකවත් කතුවරයා සඳහන් කරන්නේ යෙදුම විකිරණශීලී පරිසරයෙන් පිටත හොඳින් ක්‍රියාත්මක වන බවයි.
මාර්ක් 2377

9

විකිරණ පරිසරයෙන් පිටත මාස්ටර් කෙනෙකු සහිත 3+ වහල් යන්ත්‍ර ඔබට අවශ්‍යය. සියලුම I / O ඡන්දය සහ / හෝ නැවත උත්සාහ කිරීමේ යාන්ත්‍රණයක් අඩංගු මාස්ටර් හරහා ගමන් කරයි. වහලුන්ට දෘඩාංග මුරටැඹක් තිබිය යුතු අතර ඒවා ගැසීමේ ඇමතුම සී.ආර්.සී. හෝ ඒ හා සමාන විය යුතුය. ගැසීම ස්වාමියා විසින් පාලනය කළ යුතුය, එබැවින් මාස්ටර් සමඟ නැතිවූ සම්බන්ධතාවය තත්පර කිහිපයක් තුළ නැවත පණගැන්වීමට සමාන වේ.

මෙම විසඳුමේ එක් වාසියක් නම්, ඔබට වහලුන්ට මෙන් එකම ඒපීඅයි ස්වාමියාට භාවිතා කළ හැකි වීමයි, එබැවින් අතිරික්තය විනිවිද පෙනෙන අංගයක් බවට පත්වේ.

සංස්කරණය කරන්න: අදහස් දැක්වීම් වලින් "CRC අදහස" පැහැදිලි කිරීමේ අවශ්‍යතාවය මට දැනේ. ඔබ සී.ආර්.සී. සමඟ ගැටිත්ත වට කර ඇත්නම් හෝ ස්වාමියාගේ අහඹු දත්ත පරීක්ෂා කිරීම ජීර්ණය කළ හොත් දාසයා තමන්ගේම ඔරලෝසුවක් ගැසීමේ හැකියාව බිංදුවට ආසන්න වේ. එම අහඹු දත්ත යවනු ලබන්නේ ස්වාමියාගෙන් වන අතර, පරීක්ෂාවට ලක් කරන දාසයා අනෙක් අය සමඟ පෙලගැසී සිටින විට පමණි. අහඹු දත්ත සහ සීආර්සී / ඩයිජෙස්ට් එක් එක් ගැටිත්තෙන් පසු වහාම ඉවත් කරනු ලැබේ. මාස්ටර්-ස්ලේව් බම්ප් සංඛ්‍යාතය ඔරලෝසුවේ වේලාව මෙන් දෙගුණයකට වඩා වැඩි විය යුතුය . මාස්ටර් වෙතින් යවන ලද දත්ත සෑම විටම අද්විතීය ලෙස ජනනය වේ.


7
මම උත්සාහ කරන්නේ ඔබට විකිරණ පරිසරයෙන් පිටත ස්වාමියෙකු සිටිය හැකි, විකිරණ පරිසරය තුළ වහලුන් සමඟ විශ්වාසදායක ලෙස සන්නිවේදනය කළ හැකි, විකිරණ පරිසරයෙන් පිටත වහලුන් තැබිය නොහැකි තත්වයක් වටහා ගැනීමට ය.
fostandy

1
ondfostandy: වහලුන් යනු පාලකයෙකු අවශ්‍ය උපකරණ භාවිතා කිරීම මැනීම හෝ පාලනය කිරීමයි. ගයිගර් කවුන්ටරයක් ​​කියන්න. වහල් අතිරික්තය හේතුවෙන් ස්වාමියාට විශ්වාසදායක සන්නිවේදනයක් අවශ්‍ය නොවේ.
ජොනස් බිස්ට්‍රෝම්

4
ස්වාමියා හඳුන්වා දීම මඟින් ස්වයංක්‍රීයව ආරක්ෂාව වැඩි නොවේ. මතක දූෂණය හේතුවෙන් x දාසයා පිස්සු වැටී ඇත්නම්, එය නැවත නැවතත් "ස්වාමියා මෙහි සිටී, ස්වාමියා සතුටුයි" යැයි නැවත නැවතත් පවසනවා නම්, සීආර්සී හෝ මාස්ටර්ගේ ඇණවුම් කිසිවක් එය සුරැකෙන්නේ නැත. එම දාසයාගේ බලය කපා හැරීමේ හැකියාව ඔබ ස්වාමියාට දිය යුතුය. ඔබට පොදු හේතු දෝෂයක් තිබේ නම්, වැඩි වහලුන් එකතු කිරීමෙන් ආරක්ෂාව වැඩි නොවේ. මෘදුකාංග දෝෂ ප්‍රමාණය සහ බිඳ දැමිය හැකි දේවල් ප්‍රමාණය සංකීර්ණත්වය සමඟ වැඩි වන බව මතක තබා ගන්න.
ලුන්ඩින්

5
එසේ පැවසුවහොත්, ඔබට එම විකල්පය තිබේ නම්, විකිරණශීලී පරිසරය තුළ ඇති ඉලෙක්ට්‍රොනික උපකරණ හැකි තරම් සරල ලෙස තබා ගන්නා අතරම, වැඩසටහනෙන් වැඩි ප්‍රමාණයක් නිරාවරණය වන තැනකට “බාහිරින්” ලබා ගැනීම සතුටක්.
ලුන්ඩින්

7

ඔබගේ යෙදුමේ බොහෝ අවස්ථා ධාවනය කරන්නේ කෙසේද? බිඳවැටීම් අහඹු මතක බිටු වෙනස්වීම් නිසා සිදුවුවහොත්, ඔබගේ සමහර යෙදුම් අවස්ථා මඟින් එය සිදු කර නිවැරදි ප්‍රති .ල ලබා දෙනු ඇත. ඔබට අවශ්‍ය පරිදි කුඩා සමස්ත දෝෂයක් සාක්ෂාත් කර ගැනීම සඳහා ලබා දී ඇති බිට් ෆ්ලොප් සම්භාවිතාව කොපමණ වාර ගණනක් අවශ්‍ය දැයි ගණනය කිරීම (සංඛ්‍යානමය පසුබිමක් ඇති කෙනෙකුට) බොහෝ විට පහසුය.


2
නිසැකවම කාවැද්දූ පද්ධතියක් අවස්ථා කිහිපයකදීම වෙඩි තැබීම, දෘඩාංග අවශ්‍යතා ඉහළ නැංවීම සහ අවම වශයෙන් එක් අවස්ථාවක් වත් හරි යයි කියා අන්ධ වාසනාව බලාපොරොත්තුවෙන් සිටිනවාට වඩා ශක්තිමත් යෙදුමක එක් අවස්ථාවක ආරක්ෂිත විවේචනාත්මක ඇල්ලීමට වැඩි කැමැත්තක් දක්වයිද? මට අදහස
ලැබුන

7

ඔබ ඉල්ලන දෙය තරමක් සංකීර්ණ මාතෘකාවකි - පහසුවෙන් පිළිතුරු දිය නොහැක. අනෙක් පිළිතුරු හරි, නමුත් ඒවා ඔබ කළ යුතු සියලු දේවලින් කුඩා කොටසක් ආවරණය කරයි.

අදහස් දැක්වීම්වල දැක්වෙන පරිදි , දෘඩාංග ගැටළු 100% ක් විසඳා ගත නොහැක, කෙසේ වෙතත් විවිධ උපක්‍රම භාවිතා කරමින් ඒවා අඩු කිරීමට හෝ අල්ලා ගැනීමට ඉහළ සම්භාවිතාවක් ඇත.

මම ඔබ නම්, මම ඉහළම ආරක්ෂිත අඛණ්ඩතාව මට්ටමේ (SIL-4) මෘදුකාංගය නිර්මාණය කරමි . IEC 61513 ලේඛනය (න්‍යෂ්ටික කර්මාන්තය සඳහා) ලබා ගෙන එය අනුගමනය කරන්න.


11
නැතහොත්, තාක්ෂණික අවශ්‍යතා කියවා අර්ථවත් ඒවා ක්‍රියාත්මක කරන්න. SIL ප්‍රමිතීන්ගෙන් විශාල කොටසක් විකාරයකි, ඔබ ඒවා නිර්භීතව අනුගමනය කළහොත් ඔබ අනාරක්ෂිත හා භයානක නිෂ්පාදන සමඟ අවසන් වනු ඇත. අද දින SIL සහතික කිරීම ප්‍රධාන වශයෙන් ටොන් ගණනක් ලියකියවිලි නිෂ්පාදනය කර පරීක්ෂණ නිවසකට අල්ලස් දීම ය. පද්ධතියේ සැබෑ ආරක්ෂාව ගැන SIL මට්ටම කිසිවක් නොකියයි. ඒ වෙනුවට, ඔබට සැබෑ තාක්ෂණික ආරක්ෂක පියවරයන් කෙරෙහි අවධානය යොමු කිරීමට අවශ්‍ය වනු ඇත. SIL ලේඛනවල ඉතා හොඳ ඒවා කිහිපයක් තිබේ, සහ සම්පූර්ණ විකාර කිහිපයක් තිබේ.
ලුන්ඩින්

7

අයන පහසුවෙන් බිටු පෙරළීම වැළැක්වීම සඳහා මන්දගාමී චිප්ස් භාවිතා කිරීම ගැන යමෙක් සඳහන් කළේය. ඒ හා සමාන ආකාරයකින් සමහර විට විශේෂිත cpu / ram එකක් භාවිතා කරන්න, එය ඇත්ත වශයෙන්ම එක් බිට් එකක් ගබඩා කිරීම සඳහා බහු බිටු භාවිතා කරයි. මේ අනුව දෘඩාංග දෝෂ ඉවසීමක් ලබා දීම නිසා සියලු බිටු පෙරළීමට ඉඩක් නැත. එබැවින් 1 = 1111 නමුත් සැබවින්ම පෙරළීමට 4 වතාවක් පහර දිය යුතුය. (4 බිටු 2 ක් දැනටමත් නොපැහැදිලි නිසා පෙරළී ගියහොත් 4 නරක අංකයක් විය හැකිය). එබැවින් ඔබ 8 සමඟ ගියහොත්, ඔබට 8 ගුණයක් අඩු බැටළුවා සහ සමහර කොටස් මන්දගාමී ප්‍රවේශ වේලාවක් ලබා ගත හැකි නමුත් වඩා විශ්වාසදායක දත්ත නිරූපණයකි. විශේෂිත සම්පාදකයෙකු (සෑම දෙයකටම x ප්‍රමාණයට වැඩි ඉඩක් වෙන් කරන්න) හෝ භාෂා ක්‍රියාත්මක කිරීම (මේ ආකාරයෙන් දේවල් වෙන් කරන දත්ත ව්‍යුහයන් සඳහා ආවරණ ලියන්න) සමඟ මෘදුකාංග මට්ටමින් ඔබට මෙය කළ හැකිය.


7

සමහර විට එය දෘඩාංග “මෙම පරිසරය සඳහා නිර්මාණය කර” ඇති බව දැන ගැනීමට උපකාරී වනු ඇත. SEU දෝෂ ඇති බව එය නිවැරදි කරන්නේ සහ / හෝ දක්වන්නේ කෙසේද?

එක් අභ්‍යවකාශ ගවේෂණය හා සම්බන්ධ ව්‍යාපෘතියක, අපට අභිරුචි MCU එකක් තිබී ඇති අතර, එය SEU දෝෂයන් සඳහා ව්‍යතිරේකයක් / බාධා කිරීම් මතු කරයි, නමුත් යම් ප්‍රමාදයකින්, එනම්, SEU ව්‍යතිරේකයට හේතු වූ එක් පරික්ෂාවකින් පසුව සමහර චක්‍ර සමත් විය හැකිය / උපදෙස් ක්‍රියාත්මක කළ හැකිය.

දත්ත හැඹිලිය විශේෂයෙන් අවදානමට ලක්විය හැකි බැවින් හසුරුවන්නා විසින් වැරදි කළ හැඹිලි රේඛාව අවලංගු කර වැඩසටහන නැවත ආරම්භ කරනු ඇත. ව්‍යතිරේකයේ අවිනිශ්චිත ස්වභාවය නිසා, ව්‍යතිරේකය ඉහළ නැංවීම මගින් මෙහෙයවන ඉන්ස් අනුක්‍රමය නැවත ආරම්භ කළ නොහැකි වනු ඇත.

අන්තරායකර (නැවත ආරම්භ කළ නොහැකි) අනුපිළිවෙල අපි හඳුනා ගත්තෙමු (වැනි lw $3, 0x0($2), ඉන් පසුව, එය වෙනස් කරන $2සහ දත්ත මත රඳා නොපවතින $3), මම GCC වෙත වෙනස් කිරීම් සිදු කළෙමි, එබැවින් එවැනි අනුක්‍රමයන් සිදු නොවේ (උදා: අවසාන පියවරක් ලෙස, වෙන් කිරීම අ nop) දෙකක් .

සලකා බැලිය යුතු දෙයක් ...


7

ඔබේ දෘඩාංග අසමත් වුවහොත් ඔබට එය නැවත ලබා ගැනීමට යාන්ත්‍රික ආචයනය භාවිතා කළ හැකිය. ඔබේ කේත පදනම කුඩා නම් සහ යම් භෞතික ඉඩක් තිබේ නම් ඔබට යාන්ත්‍රික දත්ත ගබඩාවක් භාවිතා කළ හැකිය.

රූප විස්තරය මෙහි ඇතුළත් කරන්න

විකිරණ මගින් බලපෑමට ලක් නොවන ද්‍රව්‍ය මතුපිටක් ඇත. බහු ගියර් ඇත. යාන්ත්‍රික පා er කයෙකු සියළුම ගියර් මත ධාවනය වන අතර ඉහළට හා පහළට ගමන් කිරීමට නම්යශීලී වනු ඇත. පහළට යන්නෙන් අදහස් වන්නේ එය 0 වන අතර ඉහළ යන්නෙන් අදහස් වන්නේ එය 1 වන බවයි.


2
CD-ROM වැනි දෘශ්‍ය මාධ්‍යයක් මෙම අර්ථ දැක්වීම සපුරාලනු ඇත. එයට විශාල ධාරිතාවයකින් අමතර ප්‍රසාද දීමනාවක් ලැබෙනු ඇත.
වොස්නාම්

2
ඔව්, එය සමාන වනු ඇත, නමුත් සීඩී රොම් අඩු භාවිතා කරනු ඇත, නමුත් මෙය සම්පූර්ණයෙන්ම යාන්ත්‍රික පද්ධතියක් වනු ඇත.
හිතුල්

7
ඔවුන් අභ්‍යවකාශයේ පන්ච් කාඩ් කියවනයන් භාවිතා නොකිරීමට හේතුවක් තිබේදැයි මම කල්පනා කරමි.
සෝරන්

3
Ore සෝරන් වේගය සහ භෞතික අවකාශය හේතුවක් විය හැකිය.
හිතුල්

5

චක්‍රීය උපලේඛනයක් භාවිතා කරන්න . විවේචනාත්මක දත්තවල නිරවද්‍යතාවය පරීක්ෂා කිරීම සඳහා නිතිපතා නඩත්තු වේලාවන් එක් කිරීමට මෙය ඔබට හැකියාව ලබා දෙයි. බොහෝ විට මුහුණ දෙන ගැටළුව වන්නේ තොගයේ දූෂණයයි. ඔබේ මෘදුකාංගය චක්‍රීය නම් ඔබට චක්‍ර අතර තොගය නැවත ආරම්භ කළ හැකිය. බාධාකාරී ඇමතුම් සඳහා තොග නැවත භාවිතා නොකරන්න, එක් එක් වැදගත් බාධා ඇමතුම් සඳහා වෙනම තොගයක් සකසන්න.

වොච්ඩෝග් සංකල්පයට සමාන වන්නේ නියමිත කාල නියමයන් ය. ශ්‍රිතයක් ඇමතීමට පෙර දෘඩාංග ටයිමරයක් ආරම්භ කරන්න. නියමිත කාල නියමය බාධා කිරීමට පෙර ශ්‍රිතය ආපසු නොඑන්නේ නම්, තොගය නැවත පූරණය කර නැවත උත්සාහ කරන්න. 3/5 උත්සාහ කිරීමෙන් පසුව එය තවමත් අසමත් වුවහොත් ඔබට ROM වෙතින් නැවත පූරණය කිරීම අවශ්‍ය වේ.

ඔබේ මෘදුකාංගය කොටස් වලට බෙදන්න සහ වෙනම මතක ප්‍රදේශ සහ ක්‍රියාත්මක වන වේලාවන් භාවිතා කිරීමට මෙම කොටස් හුදකලා කරන්න (විශේෂයෙන් පාලන පරිසරයක). උදාහරණය: සං signal ා ලබා ගැනීම, දත්ත පෙර සැකසීම, ප්‍රධාන ඇල්ගොරිතම සහ ප්‍රති result ල ක්‍රියාත්මක කිරීම / සම්ප්‍රේෂණය. මෙයින් අදහස් කරන්නේ එක් කොටසක අසමත් වීම වැඩසටහනේ ඉතිරි කොටස් හරහා අසාර්ථක වීමට හේතු නොවන බවයි. එබැවින් අපි සං signal ා අත්පත් කර ගැනීම අළුත්වැඩියා කරන අතරේ ඉතිරි කාර්යයන් පරණ දත්ත මත අඛණ්ඩව පවතී.

සෑම දෙයකටම CRC අවශ්‍යයි. ඔබ RAM වලින් පිටත ක්‍රියාත්මක කරන්නේ නම් ඔබේ .text ට CRC එකක් අවශ්‍ය වේ. ඔබ චක්‍රීය උපලේඛනයක් භාවිතා කරන්නේ නම් CRCs නිරන්තරයෙන් පරීක්ෂා කරන්න. සමහර සම්පාදකයින්ට (ජීසීසී නොවේ) එක් එක් කොටස සඳහා සීආර්සී ජනනය කළ හැකි අතර සමහර ප්‍රොසෙසරයන්ට සීආර්සී ගණනය කිරීම් සඳහා දෘඩාංග කැප කර ඇත, නමුත් එය ඔබගේ ප්‍රශ්නයේ විෂය පථයෙන් බැහැර වනු ඇතැයි මම සිතමි. සී.ආර්.සී. පරීක්ෂා කිරීමෙන් මතකයේ ඇති ඊසීසී පාලකය ගැටළුවක් බවට පත්වීමට පෙර තනි බිට් දෝෂ අළුත්වැඩියා කිරීමට ද විමසයි.


4

පළමුව, ඔබේ යෙදුම අසාර්ථක වූ විට සැලසුම් කරන්න . සාමාන්‍ය ප්‍රවාහ ක්‍රියාකාරිත්වයේ කොටසක් ලෙස, එය නැවත සැකසීමට අපේක්ෂා කරන බව සහතික කරන්න (ඔබේ යෙදුම සහ අසමත් වීමේ වර්ගය මත පදනම්ව මෘදු හෝ දැඩි). මෙය පරිපූර්ණ කර ගැනීම අසීරු ය: යම් තරමක ගනුදෙනු අවශ්‍ය වන විවේචනාත්මක මෙහෙයුම් එකලස් මට්ටමින් පරීක්ෂා කර නවීකරණය කිරීම අවශ්‍ය විය හැකි අතර එමඟින් ප්‍රධාන අවස්ථාවක බාධා කිරීම් බාහිර නොගැලපීම් වලට නොගැලපේ. කිසියම් සොයාගත නොහැකි මතක දූෂණයක් හෝ පාලන ප්‍රවාහ අපගමනය අනාවරණය වූ වහාම වේගයෙන් අසමත් වේ. හැකි නම් ලොග් අසමත් වීම.

දෙවනුව, හැකි සෑම තැනකම දූෂණය නිවැරදි කර ඉදිරියට යන්න . මෙයින් අදහස් කරන්නේ නිරන්තර වගු පරීක්ෂා කිරීම සහ සවි කිරීම (සහ ඔබට හැකි නම් වැඩසටහන් කේතය); සමහර විට එක් එක් ප්‍රධාන මෙහෙයුමට පෙර හෝ කාලානුරූපී බාධා කිරීම් වලදී සහ ස්වයංක්‍රීයව නිවැරදි කරන ව්‍යුහයන්හි විචල්‍යයන් ගබඩා කිරීම (නැවත වරක් එක් එක් ප්‍රධාන විකල්පයට පෙර හෝ කාලානුරූපී බාධා කිරීම් වලදී බහුතර ඡන්ද 3 ක් ලබාගෙන තනි අපගමනය නම් නිවැරදි කරන්න). හැකි නම් ලොග් නිවැරදි කිරීම්.

තෙවනුව, පරීක්ෂණ අසමත් වීම . Psuedo-අහඹු ලෙස මතකයේ බිටු පෙරළෙන පුනරාවර්තන පරීක්ෂණ පරිසරයක් සකසන්න . දූෂණ තත්වයන් නැවත නැවත කිරීමට සහ ඒවා වටා ඔබේ යෙදුම සැලසුම් කිරීමට මෙය ඔබට ඉඩ සලසයි.


3

සුපර් කැට්ගේ අදහස්, නවීන සම්පාදකයින්ගේ ප්‍රවණතා සහ වෙනත් දේ සැලකිල්ලට ගෙන, පුරාණ කාලයට ගොස් මුළු කේතයම එකලස් කිරීමේ හා ස්ථිතික මතක වෙන්කිරීම්වල සෑම තැනකම ලිවීමට මා පෙළඹෙනු ඇත. මේ ආකාරයේ පූර්ණ විශ්වසනීයත්වයක් සඳහා, එකලස් කිරීම තවදුරටත් පිරිවැයේ විශාල ප්‍රතිශත වෙනසක් ඇති නොකරයි.


මම එකලස් කිරීමේ භාෂාවේ විශාල රසිකයෙක් (මගේ ප්‍රශ්න වලින් වෙනත් ප්‍රශ්න වලට ඔබට පෙනෙන පරිදි), නමුත් මෙය හොඳ පිළිතුරක් යැයි මම නොසිතමි. බොහෝ සී කේත සඳහා සම්පාදකයාගෙන් අපේක්ෂා කළ යුත්තේ කුමක්දැයි දැන ගැනීම තරමක් දුරට හැකි ය (රෙජිස්ටාර් හා එදිරිව මතකයේ ජීවත්වන අගයන් අනුව), එය ඔබ අපේක්ෂා කළ දෙය දැයි බැලීමට ඔබට සැමවිටම පරීක්ෂා කළ හැකිය. ARM asm ලිවීමට ඔබට පහසු සංවර්ධකයින් සිටියත්, asm හි විශාල ව්‍යාපෘතියක් අතින් ලිවීම අමතර වැඩකි. එකම ප්‍රති result ලය 3 වතාවක් ගණනය කිරීම වැනි දේවල් කිරීමට ඔබට අවශ්‍ය නම්, සමහර කාර්යයන් asm හි ලිවීම අර්ථවත් කරයි. (සම්පාදකයින් එය සීඑස්ඊ වෙතින් ඉවත් කරනු ඇත)
පීටර් කෝඩ්ස්

ඊට වඩා සමතුලිත විය යුතු ඉහළ අවදානම සම්පාදකයා යාවත්කාලීන කිරීම මඟින් ඔබට අනපේක්ෂිත වෙනස්කම් සිදු විය හැකිය.
යෝෂුවා

1

මෙන්න විශාල පිළිතුරු ප්‍රමාණයක් ඇත, නමුත් මම මේ පිළිබඳ මගේ අදහස් සාරාංශ කිරීමට උත්සාහ කරමි.

යම් දෙයක් බිඳ වැටීම හෝ නිවැරදිව ක්‍රියා නොකිරීම ඔබේම වැරදිවල ප්‍රති result ලයක් විය හැකිය - එවිට ඔබ ගැටලුව සොයාගත් විට එය පහසුවෙන් විසඳා ගත යුතුය. නමුත් දෘඩාංග අසමත්වීමේ හැකියාවක් ද ඇත - සමස්තයක් ලෙස නිවැරදි කිරීමට නොහැකි නම් එය දුෂ්කර ය.

ලොග් වීම (තොග, රෙජිස්ටර්, ක්‍රියාකාරී ඇමතුම්) - ඒවා කොහේ හරි ගොනුවකට ලොග් කිරීමෙන් හෝ ඒවා කෙලින්ම සම්ප්‍රේෂණය කිරීමෙන් ("අනේ නෑ - මම කඩා වැටෙනවා") ගැටලු සහගත තත්වය හසු කර ගැනීමට උත්සාහ කිරීමට මම පළමුව නිර්දේශ කරමි.

එවැනි දෝෂ තත්වයන්ගෙන් යථා තත්ත්වයට පත් කිරීම එක්කෝ නැවත ආරම්භ කිරීම (මෘදුකාංග තවමත් ජීවතුන් අතර පයින් ගසන්නේ නම්) හෝ දෘඩාංග යළි පිහිටුවීම (උදා: hw watchdogs). පළමු එකෙන් ආරම්භ කිරීම පහසුය.

ගැටළුව දෘඩාංග හා සම්බන්ධ නම් - එවිට ල ging ු-සටහන් මඟින් කුමන ක්‍රියාකාරී ඇමතුම් ගැටළුවක් ඇතිවේද යන්න හඳුනා ගැනීමට ඔබට උපකාර කළ හැකි අතර එමඟින් ක්‍රියා නොකරන දේ සහ කොතැනද යන්න පිළිබඳව ඔබට දැනුමක් ලබා ගත හැකිය.

කේතය සාපේක්ෂව සංකීර්ණ නම් - එය "බෙදීම සහ ජය ගැනීම" අර්ථවත් කරයි - එයින් අදහස් කරන්නේ ඔබ ගැටළුව යැයි සැක කරන සමහර ක්‍රියාකාරී ඇමතුම් ඉවත් කිරීම / අක්‍රීය කිරීම - සාමාන්‍යයෙන් කේතයෙන් අඩක් අක්‍රීය කිරීම සහ තවත් අඩක් සක්‍රීය කිරීම - ඔබට "වැඩ කරයි" / කේතයේ තවත් භාගයක් වෙත අවධානය යොමු කළ හැකි ආකාරයේ තීරණයක් "ක්‍රියා නොකරයි". (ගැටලුව ඇති තැන)

යම් කාලයකට පසු ගැටළුවක් ඇති වුවහොත් - එවිට තොග පිටාර ගැලීම සැක කළ හැකිය - එවිට තොග ලක්ෂ්‍ය ලේඛනයන් නිරීක්ෂණය කිරීම වඩා හොඳය - ඒවා නිරන්තරයෙන් වර්ධනය වන්නේ නම්.

"හෙලෝ වර්ල්ඩ්" ආකාරයේ යෙදුමක් වන තෙක් ඔබේ කේතය සම්පූර්ණයෙන් අවම කිරීමට ඔබ කළමනාකරණය කරන්නේ නම් - එය තවමත් අහඹු ලෙස අසමත් වේ - එවිට දෘඩාංග ගැටලු අපේක්ෂා කෙරේ - සහ "දෘඩාංග උත්ශ්‍රේණිගත කිරීමක්" තිබිය යුතුය - එනම් එවැනි cpu / ram / ... විකිරණ වඩා හොඳින් ඉවසා දරාගත හැකි හාඩ්වෙයාර් සංයෝජනය.

වැදගත්ම දෙය නම් යන්ත්‍රය සම්පූර්ණයෙන් නැවැත්වූ විට / නැවත සකස් කළ විට / ක්‍රියා නොකරන්නේ නම් ඔබේ ල logs ු-සටහන් නැවත ලබා ගන්නේ කෙසේද යන්නයි.

ඔබේ පරිසරය තුළ සං signal ාවක් සම්ප්‍රේෂණය කර ප්‍රතිචාරයක් ලැබිය හැකි නම් - ඔබට යම් ආකාරයක මාර්ගගත දුරස්ථ නිදොස් කිරීමේ පරිසරයක් තැනීමට උත්සාහ කළ හැකිය, නමුත් එවිට ඔබට අවම වශයෙන් සන්නිවේදන මාධ්‍යයක්වත් වැඩකරන තත්වයක් තිබිය යුතුය. දුරස්ථ නිදොස්කරණයෙන් මා අදහස් කරන්නේ GDB / gdb මුරණ්ඩු ආකාරයේ ප්‍රවේශයක් හෝ ඔබේ යෙදුමෙන් ආපසු ලබා ගැනීමට අවශ්‍ය දේ ඔබ විසින්ම ක්‍රියාත්මක කිරීමයි (උදා: ලොග් ගොනු බාගත කිරීම, ඇමතුම් තොගය බාගත කිරීම, බාගත කිරීම, නැවත ආරම්භ කිරීම)


කණගාටුයි, නමුත් ප්‍රශ්නය වන්නේ දෘඩාංග අසමත්වීම් සිදුවන විකිරණශීලී පරිසරයයි. ඔබේ පිළිතුර සාමාන්‍ය මෘදුකාංග ප්‍රශස්තිකරණය සහ දෝෂ සොයා ගන්නේ කෙසේද යන්නයි. නමුත් මෙම තත්වය තුළ, දෝෂයන් දෝෂ මගින් නිපදවන්නේ නැත
jeb

ඔව්, ඔබට පෘථිවි ගුරුත්වාකර්ෂණය, සම්පාදක ප්‍රශස්තිකරණය, තෙවන පාර්ශවීය පුස්තකාලය, විකිරණශීලී පරිසරය යනාදිය ද දොස් පැවරිය හැකිය. නමුත් එය ඔබේම දෝෂ නොවන බව ඔබට විශ්වාසද? :-) ඔප්පු කර නොමැති නම් - මම එය විශ්වාස නොකරමි. මම වරෙක යම් ස්ථිරාංග යාවත්කාලීනයක් සහ පවර්ෆෝෆ් තත්වයක් පරීක්ෂා කර බැලුවෙමි - මගේ මෘදුකාංගය සියලු බලශක්තියෙන් බේරී ඇත්තේ මගේ සියලු දෝෂ නිවැරදි කිරීමෙන් පසුව පමණි. (රාත්‍රී කාලය තුළ පවර් ඕෆ් 4000 කට වඩා වැඩි) නමුත් සමහර අවස්ථාවල දෝෂයක් ඇති බව විශ්වාස කිරීම අපහසුය. විශේෂයෙන් අපි මතක දූෂණය ගැන කතා කරන විට.
TarmoPikaro

0

මම ඇත්තටම හොඳ පිළිතුරු ගොඩක් කියවා ඇත්තෙමි!

මෙන්න මගේ ශත 2 යි: මතකය සංඛ්යානමය ආකෘතියක් සාදන්න / අසාමාන්යතාව ලියාපදිංචි කරන්න, මතකය පරීක්ෂා කිරීම සඳහා මෘදුකාංගයක් ලිවීමෙන් හෝ නිතර ලියාපදිංචි සංසන්දනයන් සිදු කිරීම. තවද, ඔබට ගැටලුව සමඟ අත්හදා බැලිය හැකි අතථ්‍ය යන්ත්‍රයක ශෛලිය තුල ඉමුලේටරයක් ​​සාදන්න. මම හිතන්නේ ඔබ හන්දියේ ප්‍රමාණය, ඔරලෝසු සංඛ්‍යාතය, විකුණුම්කරු, ආවරණ ආදිය වෙනස් කරන්නේ නම් වෙනස් හැසිරීමක් නිරීක්ෂණය කරනු ඇත.

අපගේ ඩෙස්ක්ටොප් පරිගණක මතකයේ පවා යම් අසමත් වීමේ අනුපාතයක් ඇත, කෙසේ වෙතත් එදිනෙදා වැඩකටයුතුවලට එය බාධාවක් නොවේ.

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.