কীভাবে সিপিইউর জন্য অপকোড দক্ষতার সাথে ডিজাইন করবেন?


12

আমি লোগিসিমে একটি সাধারণ 16-বিট সিপিইউ তৈরি করছি এবং ALU প্রস্তুত এবং আমার কাছে থাকা ওপকোডগুলি রয়েছে। কমান্ডগুলির জন্য সঠিক কোডিংটি খুঁজে পাওয়া আমার পক্ষে এখন সত্যিই শক্ত। এমন কোনও কৌশল বা পদ্ধতি রয়েছে যা একটি দক্ষ অপকোড ডিজাইনে সহায়তা করে?

অগ্রিম THX


1
প্রথমে আপনার ALU তৈরি করুন এবং কী কী তারের প্রয়োজন তা দেখুন control তারপরে এগুলিকে সরাসরি "বর্তমান নির্দেশ" রেজিষ্টারে তার করুন। মেমরি অ্যাক্সেস নিয়ন্ত্রণ যুক্তি এবং অপকডের অন্য কোনও বড় শ্রেণীর জন্য একই। তারপরে কোন সাবসির্কিট সক্রিয় রয়েছে তা নির্বাচন করতে যা কিছু বিট বাকি রয়েছে তা ব্যবহার করুন।
ব্যবহারকারী 253751

1
কেন চ্যাপম্যানের তার 8-বিট অগ্রগামযোগ্য স্টেটমাছাইন কেসিপিএসএম ওরফে পিকোব্লেজের মূল কাগজটিও রয়েছে। এটি নির্দেশাবলী কীভাবে চয়ন করে এবং আইএসএ নকশা করেছে তা বর্ণনা করে। ডিসিউবা.আর
ডিসিস্প্পগা /

উত্তর:


9

আমি মনে করি এটি অন্য কিছু নির্দেশের সেটগুলি অধ্যয়ন করার জন্য একটি ভাল পদ্ধতির।

একটি ছোট্ট টিআই থেকে এমএসপি ৪৩০ হবে এটি প্রায় ২২ টি নির্দেশাবলী সহ একটি 16 বিট প্রসেসর।

http://www.physics.mcmaster.ca/phys3b06/MSP430/MSP430_Instruction_Set_Summary.pdf

আপনি এটিমেল এভিআরগুলিতেও নজর রাখতে পারেন সেগুলির একটি খুব ছোট নির্দেশিকা সেট রয়েছে।

আমার একটি ছোট্ট প্রকল্পে আমি ভিএইচডিএলে একটি ছোট নির্দেশ নির্দেশ (14 নির্দেশাবলীর) সাথে একটি সহজ 32 বিট প্রসেসর বিকাশের চেষ্টা করেছি:

http://www.blog-tm.de/?p=80

আমার বর্তমান ফ্রি সময়ের কারণে এটি পুরোপুরি শেষ হয়নি। নির্দেশাবলী কার্যকর করা হয়েছে তবে দুটি পরীক্ষা করা হয়নি এবং কিছু স্ট্যাটাস পতাকা অনুপস্থিত রয়েছে।


তবে আমি এমন কিছু পাইনি যেখানে আমি দেখতে পেলাম প্রকৃত এনকোডিংটি কী এবং কেন এটির মতো হতে বেছে নেওয়া হয়েছিল।
বেনজয়ো

আপনি রেপোতে অ্যাক্টুয়াল সমস্ত এনকোডিংটি খুঁজে পেতে পারেন: github.com/TM90/MISC_Processor/raw/master/Docamentation/… । আমি এই এনকোডিংগুলি এমনভাবে বাছাই করার কারণটি নির্দেশ ডিকোডারে যুক্তিটি ন্যূনতম পেয়ে যায়।
টিএম 90

7

নির্দেশ কোডিংয়ের জন্য আর্ম পদ্ধতির অধ্যয়ন করুন (তবে প্রতিলিপি করবেন না)। এটি ভারী উপসর্গ-ভিত্তিক (জ্জারদা দ্বারা প্রস্তাবিত হাফম্যান ট্রি অ্যাপ্রোচের মতো) এবং নিবন্ধের নির্দেশের অংশটি যেখানে রয়েছে তার নিরিখে অত্যন্ত ইউনিফর্ম।

অকল্পনীয় তবে নির্ভরযোগ্য পন্থাটি হ'ল আপনার কাছে থাকা সমস্ত নিয়ন্ত্রণ সংকেতগুলি গণনা করা, যা সম্ভবত 16 বিটেরও বেশি হবে এবং তারপরে কার্নো-মানচিত্রের স্টাইলের লজিক মিনিমাইজেশন করার চেষ্টা করবে।


আপনি নিয়ন্ত্রণ সংকেত দ্বারা যা বোঝাতে চেয়েছেন তা সত্যিই পাই না।
বেনজয়ো

এআরএম সম্পর্কে আমি যা পেয়েছি এবং পছন্দ করি তা শর্ত ক্ষেত্র, আমি এটি অন্তর্ভুক্ত করব।
বেনজয়ো

কন্ট্রোল সিগন্যালগুলি বিভিন্ন মাল্টিপ্লেক্সারের ইনপুট এবং সিপিইউয়ের অংশগুলির মধ্যে সরাসরি ডেটা সক্ষম করে।
pjc50

16-বিটের আর্কিটেকচারের জন্য, আমি মনে করি না এআরএম এর নির্দেশনা এনকোডিং উপযুক্ত। মেবি থাম্ব 2 আরও ভাল। তবে আমি
এমকিপ্সের এনকোডিংয়ের পদ্ধতিটি

4

একবার আমি লগিসিমে 8-বিট নির্দেশিকা দৈর্ঘ্যের কোর সহ 4-বিট সিপিইউ করার চেষ্টা করেছি। একটি সাধারণ রাষ্ট্র মেশিন দিয়ে শেষ হয়েছে, সিপিইউর চেয়ে বেশি, সত্যই।

এলোমেলো জিনিসগুলি সন্ধান করতে

  • হাফম্যান গাছ
  • স্থির দৈর্ঘ্য বা পরিবর্তনশীল এনকোডিং?
  • এটি কি একক ঠিকানা জায়গার সাথে ভন নিউম্যান ডিজাইন, বা আলাদা ডেটা / প্রোগ্রাম সহ হার্ভার্ড-স্টাইল?

হাফম্যান গাছ সম্পর্কে কম্পিউটারফিলিতে দুর্দান্ত ভিডিও:

https://www.youtube.com/watch?v=umTbivyJoiI


হাফম্যান কোডিং একটি নির্দিষ্ট দৈর্ঘ্যের এনকোডিংয়ের জন্য কাজ করবে না, তাই না?
বেনজয়ো

@ বেঞ্জয়ো আমি অতিরিক্ত ব্যবহৃত নির্দেশাবলীর বৈচিত্রের জন্য অতিরিক্ত বিট ব্যবহার করার মতো দৃশ্যটি কল্পনা করতে পারি, এইভাবে আরও কার্যকারিতা সরবরাহ করে।
জজারদা

তবে এটি কী ধরণের অপ্টিমাইজেশন নিয়ে আসে তা আমি পাই না। এটি আমাকে সার্কিট ডিজাইনে সহায়তা করে না। আফকোডের জন্য হাফম্যান কোডিং ব্যবহার করার সময় লক্ষ্যটি কী?
বেনজয়ো

4

আইএসএ আমি ক্লাসের জন্য লিখেছিলাম একবার এর মত 4 বিট অপ কোড ছিল: 1XXX ALU instructions 01XX jump, jump register, call etc 001X branch not equal, branch equal zero 000X 0 - load, 1 - store

সর্বাধিক অনুকূল হওয়ার পরিবর্তে, গেটগুলি তৈরি / ডিজাইনের জন্য এটি সহজ শৈলীর মধ্যে একটি কারণ একক বিটের ইনপুট সংকেত সম্পূর্ণরূপে নিয়ন্ত্রণ করতে পারে কোন যুক্তির পথটি নেওয়া হয়। বিকল্পভাবে, আপনি হাফম্যান আপনার সর্বাধিক ব্যবহৃত প্রতীকগুলি কোড করতে পারেন এবং একটি নির্দিষ্ট দৈর্ঘ্যের ওপ কোড পেতে তাদের শূন্য প্যাড করতে পারেন।


এই ধরণের অপ্টিমাইজেশনটি আমি এই মুহুর্তে যা খুঁজছি। তবে আমার কাছে একটি 5 বিট অপকোড রয়েছে এবং আমি কমান্ডগুলি একসাথে গ্রুপিংয়ের সাথে লড়াই করছি যাতে এটি সার্কিটের মধ্যে অর্থবোধ করে।
বেনজয়ো

@ বেঞ্জয়ো আপনার উপরের বিট সেট সহ আরও একগুচ্ছ ALU নির্দেশিকা থাকতে পারে। এছাড়াও আমার জাম্প শর্ত কভারেজ বেশ দুর্বল ছিল এবং বেশিরভাগ সাধারণ শাখায় দুটি নির্দেশাবলীর প্রয়োজন হত। সাধারণত, আমি বিভাগগুলি ভেবেছিলাম: গণিত / নিয়ন্ত্রণ / মেমরি

3

আপনার একটি বিষয় বিবেচনা করতে হবে তা হ'ল যে কোনও রূপের বহু-শব্দ নির্দেশের অনুমতি দেওয়া উচিত, বা এমন কোনও কিছু যা বহু-শব্দ নির্দেশের মতো "আচরণ" করতে পারে; যদি আপনি এটি করেন তবে আপনি প্রধান নির্দেশ অনুসরণ করে অতিরিক্ত নির্দেশের শব্দ ব্যবহার করতে হবে বা এর আগে উপসর্গের শব্দ ব্যবহার করবেন কিনা তা বিবেচনা করতে পারেন। উপসর্গ এবং ফলো-অন শব্দের মঞ্জুরি দেওয়া বাধা হ্যান্ডলিংয়ের জটিলতা বাড়িয়ে তুলতে পারে, তবে এটি সাধারণভাবে ব্যবহৃত ওপোকোড জায়গাতে খুব কমই ব্যবহৃত নির্দেশাবলী মাপসই করা এড়াতে পারে।

মৃত্যুদন্ড কার্যকর করার আগে যদি চক্রটিতে নির্দেশিকা আনা হয় তবে কারও কাছে "শর্তসাপেক্ষ শাখা" নির্দেশনা থাকতে পারে যার ফলে পরবর্তী নির্দেশের শব্দটি এড়িয়ে যায় বা অন্যথায় এর সামগ্রীগুলি সরাসরি প্রোগ্রামের কাউন্টারে স্থানান্তরিত করতে পারে; যেমন একটি নকশা ক্রম ক্রম ব্যাহত করতে কিছু অতিরিক্ত জটিলতা যুক্ত করতে পারে, তবে শাখা শর্তের বিস্তৃত বিস্তৃত অনুমতি দেওয়ার সাথে সাথে "শাখা", "জাম্প" এবং "কল" নির্দেশাবলীর জন্য অপকোড স্পেসের একটি বড় অংশ ব্যবহার করা সহজ করতে পারে অন্যথায় সম্ভব হতে পারে। যেহেতু একটি শাখা নেওয়া হয় সাধারণত নির্দেশটি যেখানেই আসে তা নির্ধারণ না করেই নির্দেশের প্রয়োগের পরে একটি মৃত চক্রের প্রয়োজন হবে, নিম্নলিখিত শব্দটি ঠিকানাটি পাওয়া গেছে যা কার্যকর করা হয়েছে তবে মৃত্যুদন্ড কার্যকর করা হবে না এমন কোনও অতিরিক্ত ব্যয় হয় না সময়।

যদিও শাখার নির্দেশাবলীর বাইরে লক্ষ্য ঠিকানাটি সরিয়ে ফেললে তারা কতটা অপকোড স্থান নিয়ে যায় তা হ্রাস করবে, একটি 16-বিট অপকোড ফর্ম্যাটটি এখনও বেশ শক্ত। উপসর্গ নির্দেশাবলী ব্যবহার করে এটি সাহায্য করতে পারে। যদি উদাহরণস্বরূপ, কারও কাছে 32 টি রেজিস্ট্রার থাকতে চায়, যে কোনও রেজিস্টারকে সোর্স 1, উত্স 2, এবং গন্তব্য হিসাবে স্বতন্ত্রভাবে সুনির্দিষ্টভাবে নির্দিষ্ট করার জন্য ওপকোডে 15 বিট লাগবে, পুরো দুটি নির্দেশের পুরোপুরি অনুমতি দেওয়া হবে। খুব দরকারী না। অন্যদিকে, তিনটি অপারেটরের প্রত্যেকের জন্য 32 টির মধ্যে যে কোনও একটিতে নিবন্ধ ব্যবহার করতে সক্ষম হওয়াই দুর্দান্ত হবে। যে কোনও এএলইউ অপারেশন করে দুটি লক্ষ্যকে ভারসাম্য বজায় রাখতে পারে যা উপ-পূর্বের আগে আটটি বিট ব্যবহার করে দু'জনের এক-ষোলটি নিবন্ধক নির্বাচন করতে পারে, তবে একটি ALU অপারেশন রয়েছে যা অবিলম্বে একটি উপসর্গের সাথে উপসর্গের কিছু বিট ব্যবহার করে নিম্নলিখিত নির্দেশ থেকে আটটি সহ, যাতে 32 টির সম্পূর্ণ সেট থেকে উত্স এবং গন্তব্য উভয়েরই স্বাধীন নির্বাচনের অনুমতি দেওয়া যায় the উপরের রেজিস্টারগুলিতে ব্যবহার করা নির্দেশাবলী একের চেয়ে দুটি শব্দ / চক্র গ্রহণ করতে পারে, তবে কিছু ক্ষেত্রে এই জাতীয় ট্রেডঅফটি সার্থক হতে পারে। উপসর্গ ব্যবহারের ক্ষেত্রে সবচেয়ে বড় অসুবিধা হ'ল একজনকে অবশ্যই একটি উপসর্গ এবং পরবর্তী নির্দেশের মধ্যে বাধা সৃষ্টি করতে হবে বা নিশ্চিত করতে হবে যে সেখানে যদি কোনও বিঘ্ন ঘটে সেখানে উপসর্গের পরে নির্দেশটি এখনও সঠিক রেজিস্টার ব্যবহার করবে [যেমন প্রোগ্রাম থাকার মাধ্যমে - কাউন্টারে সেভ লজিক স্টোর শেষ নন-প্রিফিক্স নির্দেশের ঠিকানা] তবে কিছু কিছু ক্ষেত্রে এ জাতীয় ট্রেড অফ সার্থক হতে পারে। উপসর্গ ব্যবহারের ক্ষেত্রে সবচেয়ে বড় অসুবিধা হ'ল একজনকে অবশ্যই একটি উপসর্গ এবং পরবর্তী নির্দেশের মধ্যে বাধা সৃষ্টি করতে হবে বা নিশ্চিত করতে হবে যে সেখানে যদি কোনও বিঘ্ন ঘটে সেখানে উপসর্গের পরে নির্দেশটি এখনও সঠিক রেজিস্টার ব্যবহার করবে [যেমন প্রোগ্রাম থাকার মাধ্যমে - কাউন্টারে সেভ লজিক স্টোর শেষ নন-প্রিফিক্স নির্দেশের ঠিকানা] তবে কিছু কিছু ক্ষেত্রে এ জাতীয় ট্রেড অফ সার্থক হতে পারে। উপসর্গ ব্যবহারের ক্ষেত্রে সবচেয়ে বড় অসুবিধা হ'ল একজনকে অবশ্যই একটি উপসর্গ এবং পরবর্তী নির্দেশের মধ্যে বাধা সৃষ্টি করতে হবে বা নিশ্চিত করতে হবে যে সেখানে যদি কোনও বিঘ্ন ঘটে সেখানে উপসর্গের পরে নির্দেশটি এখনও সঠিক রেজিস্টার ব্যবহার করবে [যেমন প্রোগ্রাম থাকার মাধ্যমে - কাউন্টারে সেভ লজিক স্টোর শেষ নন-প্রিফিক্স নির্দেশের ঠিকানা]

মাল্টি-ওয়ার্ড নির্দেশাবলী ব্যবহার করা ডিজাইনের কিছু দিককে আরও কঠিন করে তুলবে, তবে এটি অন্যান্য কঠিন সিদ্ধান্ত নেওয়ার প্রয়োজনকে হ্রাস করতে পারে।


0

এই লোকটির কাছে একটি ডিকোডারের হার্ডকোডযুক্ত অংশটি শক্তভাবে ওয়্যারিংয়ের বিষয়ে সর্বোত্তম বিবরণ রয়েছে, যা হার্ডকডযুক্ত সিপিইউয়ের জন্য নিয়ন্ত্রণ রেখাগুলি ব্যাখ্যা করে: http://minnie.tuhs.org/CompArch/Tutes/week03.html আপনি দেখতে পাচ্ছেন, আপনার ওপকোডগুলিতে পছন্দটি ডিকোড যুক্তিটি কতটা জটিল তা প্রভাবিত করে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.