โดยทั่วไปการเพิ่มขึ้นจาก 8 ถึง 16 เป็น 32 บิตไมโครคอนโทรลเลอร์หมายความว่าคุณจะมีข้อ จำกัด ด้านทรัพยากรน้อยลงโดยเฉพาะหน่วยความจำและความกว้างของรีจิสเตอร์ที่ใช้สำหรับการคำนวณและการดำเนินการทางตรรกะ โดยทั่วไปแล้วชื่อเล่นขนาด 8, 16 และ 32 บิตหมายถึงทั้งขนาดของบัสข้อมูลภายในและภายนอกและขนาดของรีจิสเตอร์ภายในที่ใช้สำหรับการคำนวณทางคณิตศาสตร์และตรรกะ (ใช้เป็นเพียงหนึ่งหรือสองเรียกว่าแอคคูมูเลเตอร์ ตอนนี้มักจะมีธนาคารลงทะเบียน 16 หรือ 32)
ขนาดพอร์ตพอร์ต I / O โดยทั่วไปจะเป็นไปตามขนาดบัสข้อมูลดังนั้นไมโคร 8 บิตจะมีพอร์ต 8 บิต 16 บิตจะมีพอร์ต 16 บิตเป็นต้น
แม้จะมีบัสข้อมูล 8 บิตไมโครคอนโทรลเลอร์ 8 บิตหลายตัวมีบัสแอดเดรส 16 บิตและสามารถจัดการกับหน่วยความจำขนาด 2 ^ 16 หรือ 64K ไบต์ได้ แต่ไมโคร 8 บิตบางตัวเช่น PIC ที่ต่ำสุดอาจมีพื้นที่ RAM ที่ จำกัด มาก (เช่น 96 ไบต์บน PIC16)
ในการหลีกเลี่ยงรูปแบบการ จำกัด ที่อยู่ไมโคร 8 บิตบางตัวใช้การเพจซึ่งเนื้อหาของการลงทะเบียนหน้าจะกำหนดหนึ่งในหลาย ๆ หน่วยความจำของธนาคารที่จะใช้ โดยทั่วไปจะมี RAM ทั่วไปบางส่วนที่พร้อมใช้งานไม่ว่าจะลงทะเบียนหน้าใดไว้
โดยทั่วไปแล้วไมโครคอนโทรลเลอร์ขนาด 16 บิตนั้น จำกัด อยู่ที่หน่วยความจำ 64K แต่อาจใช้เทคนิคการสลับหน้าเพื่อแก้ไขปัญหานี้ แน่นอนว่าไมโครคอนโทรลเลอร์ 32 บิตไม่มีข้อ จำกัด ดังกล่าวและสามารถจัดการหน่วยความจำได้สูงสุด 4GB
พร้อมกับขนาดหน่วยความจำที่แตกต่างกันคือขนาดสแต็ค ในไมโครสโคปด้านล่างสิ่งนี้อาจนำไปใช้ในพื้นที่หน่วยความจำพิเศษและมีขนาดเล็กมาก (PIC16 จำนวนมากมีสแต็กการโทรลึก 8 ระดับ) ในไมโคร 16 บิตและ 32 บิตสแต็กมักจะอยู่ใน RAM ทั่วไปและถูก จำกัด ด้วยขนาดของ RAM เท่านั้น
นอกจากนี้ยังมีความแตกต่างกันอย่างมากมายในปริมาณของหน่วยความจำ - ทั้งโปรแกรมและ RAM - ถูกนำไปใช้กับอุปกรณ์ต่าง ๆ 8-bit micros อาจมี RAM เพียงไม่กี่ร้อยไบต์และหน่วยความจำของโปรแกรมเพียงไม่กี่พันไบต์ (หรือน้อยกว่ามาก - ตัวอย่างเช่น PIC10F320 มีเพียง 256 คำ 14 บิตของแฟลชและ RAM 64 ไบต์) ไมโครสโคปแบบ 16 บิตอาจมี RAM สักสองสามพันไบต์และหน่วยความจำโปรแกรมนับหมื่นไบต์ ไมโคร 32 บิตมักมี RAM มากกว่า 64K ไบต์และอาจเป็น 1/2 MB หรือมากกว่าหน่วยความจำของโปรแกรม (PIC32MZ2048 มีแฟลช 2 MB และ RAM 512KB; PIC32MZ2064DAH176 ที่เพิ่งเปิดตัวใหม่ซึ่งได้รับการปรับให้เหมาะกับกราฟิกมีแฟลช 2 MB และ หน่วยความจำ RAM บนชิปขนาด 32MB)
หากคุณกำลังเขียนโปรแกรมในภาษาแอสเซมบลีข้อ จำกัด ของขนาดการลงทะเบียนจะชัดเจนมากตัวอย่างเช่นการเพิ่มตัวเลข 32 บิตสองบิตเป็นงานที่น่าทึ่งบนไมโครคอนโทรลเลอร์ 8 บิต แต่เล็กน้อยใน 32 บิต หากคุณกำลังเขียนโปรแกรมใน C สิ่งนี้จะโปร่งใสเป็นส่วนใหญ่ แต่แน่นอนว่าโค้ดที่คอมไพล์แล้วจะมีขนาดใหญ่กว่าสำหรับโปรแกรม 8-ขม
ฉันบอกว่าส่วนใหญ่โปร่งใสเนื่องจากขนาดของชนิดข้อมูล C ต่างๆอาจแตกต่างจากขนาดหนึ่งไปอีกขนาดหนึ่ง ตัวอย่างคอมไพเลอร์ซึ่งมีเป้าหมายเป็น 8 หรือ 16 บิตไมโครอาจใช้ "int" เพื่อหมายถึงตัวแปรที่เซ็นชื่อ 16 บิตและบนไมโคร 32 บิตนี่จะเป็นตัวแปร 32 บิต ดังนั้นโปรแกรมจำนวนมากใช้ #defines เพื่อบอกขนาดที่ต้องการอย่างชัดเจนเช่น "UINT16" สำหรับตัวแปร 16 บิตที่ไม่ได้ลงนาม
หากคุณเขียนโปรแกรมใน C ผลกระทบที่ใหญ่ที่สุดคือขนาดของตัวแปร ตัวอย่างเช่นหากคุณรู้ว่าตัวแปรจะน้อยกว่า 256 เสมอ (หรืออยู่ในช่วง -128 ถึง 127 หากลงนาม) คุณควรใช้ 8-bit (ถ่านที่ไม่ได้ลงชื่อ) ในไมโคร 8 บิต (เช่น PIC16 ) เนื่องจากการใช้ขนาดที่ใหญ่กว่าจะไม่มีประสิทธิภาพมาก เช่นเดียวกันตัวแปร 16 บิตบนไมโคร 16 บิต (เช่น PIC24) หากคุณใช้ไมโคร 32 บิต (PIC32) แสดงว่ามันไม่ได้สร้างความแตกต่างอย่างแท้จริงเนื่องจากชุดคำสั่ง MIPS มีคำแนะนำแบบไบต์คำและคำสองคำ อย่างไรก็ตามใน 32- บิต micros บางหากพวกเขาขาดคำแนะนำเช่นการจัดการตัวแปร 8 บิตอาจมีประสิทธิภาพน้อยกว่า 32- บิตหนึ่งเนื่องจากการหลอกลวง
ในฐานะสมาชิกฟอรัม vsz ชี้ให้เห็นบนระบบที่คุณมีตัวแปรที่มีขนาดใหญ่กว่าขนาดลงทะเบียนเริ่มต้น (เช่นตัวแปร 16 บิตบนไมโคร 8 บิต) และตัวแปรนั้นถูกแชร์ระหว่างสองเธรดหรือระหว่างเธรดพื้นฐาน และตัวจัดการอินเทอร์รัปต์จะต้องทำการดำเนินการใด ๆ (รวมถึงการอ่าน) บนตัวแปรอะตอมซึ่งทำให้ดูเหมือนเป็นคำสั่งเดียว สิ่งนี้เรียกว่าส่วนที่สำคัญ วิธีมาตรฐานในการลดปัญหานี้คือล้อมรอบส่วนสำคัญด้วยการปิดใช้งาน / เปิดใช้งานคู่การขัดจังหวะ
ดังนั้นการเปลี่ยนจากระบบ 32 บิตเป็น 16 บิตหรือ 16 บิตเป็น 8 บิตการดำเนินการใด ๆ กับตัวแปรประเภทนี้ซึ่งตอนนี้มีขนาดใหญ่กว่าขนาดลงทะเบียนเริ่มต้น (แต่ไม่เคยเป็นมาก่อน) จำเป็นต้องได้รับการพิจารณาว่าสำคัญ มาตรา.
ความแตกต่างที่สำคัญอีกอย่างหนึ่งคือการประมวลผลจาก PIC ตัวหนึ่งไปยังอีกตัวหนึ่งคือการจัดการอุปกรณ์ต่อพ่วง สิ่งนี้มีความเกี่ยวข้องกับขนาดของคำน้อยกว่าและเกี่ยวข้องกับชนิดและจำนวนของทรัพยากรที่จัดสรรในแต่ละชิป โดยทั่วไปแล้ว Microchip ได้พยายามที่จะทำให้การเขียนโปรแกรมของอุปกรณ์ต่อพ่วงเดียวกันที่ใช้ในชิปที่แตกต่างกันคล้ายกันมากที่สุด (เช่นตัวจับเวลา 0) แต่จะมีความแตกต่างอยู่เสมอ การใช้ไลบรารีอุปกรณ์ต่อพ่วงจะซ่อนความแตกต่างเหล่านี้ในระดับใหญ่ ข้อแตกต่างสุดท้ายคือการจัดการกับการขัดจังหวะ อีกครั้งมีความช่วยเหลือจากห้องสมุด Microchip