โดยทั่วไปแล้วสถาปัตยกรรมฮาร์วาร์ดบริสุทธิ์จะอนุญาตให้คอมพิวเตอร์ที่มีระดับความซับซ้อนที่กำหนดให้ทำงานได้เร็วกว่าสถาปัตยกรรม Von Neuman โดยที่ไม่จำเป็นต้องแบ่งปันทรัพยากรระหว่างรหัสและหน่วยความจำข้อมูล หากข้อ จำกัด pinout หรือปัจจัยอื่น ๆ บังคับให้ใช้หนึ่งบัสในการเข้าถึงพื้นที่หน่วยความจำทั้งสองข้อดีดังกล่าวเป็นแนวโน้มที่จะเป็นโมฆะส่วนใหญ่
สถาปัตยกรรมฮาร์วาร์ด "บริสุทธิ์" จะถูก จำกัด ให้ใช้งานโค้ดซึ่งมีการใส่หน่วยความจำโดยกลไกบางอย่างนอกเหนือจากโปรเซสเซอร์ที่จะรันโค้ด สิ่งนี้เป็นการ จำกัด ยูทิลิตี้ของสถาปัตยกรรมดังกล่าวสำหรับอุปกรณ์ที่ไม่ได้ถูกกำหนดโดยโรงงาน (หรือผู้ที่มีอุปกรณ์การเขียนโปรแกรมพิเศษ) อาจใช้วิธีการสองวิธีในการบรรเทาปัญหานี้:
บางระบบมีรหัสแยกต่างหากและพื้นที่หน่วยความจำ แต่ให้ฮาร์ดแวร์พิเศษที่สามารถขอให้ใช้เวลาสั้น ๆ ในการบัสโค้ดดำเนินการบางอย่างและกลับไปควบคุม CPU เมื่อการดำเนินการดังกล่าวเสร็จสมบูรณ์ ระบบดังกล่าวบางระบบต้องการโปรโตคอลที่มีความละเอียดพอสมควรในการดำเนินการดังกล่าวบางระบบมีคำแนะนำพิเศษในการปฏิบัติงานดังกล่าวและบางคนถึงกับมองหาที่อยู่ "หน่วยความจำข้อมูล" บางอย่างและเรียกการรัฐประหาร . ลักษณะสำคัญของระบบดังกล่าวคือมีพื้นที่หน่วยความจำที่กำหนดไว้อย่างชัดเจนสำหรับ "code" และ "data"; แม้ว่า CPU จะสามารถอ่านและเขียนพื้นที่ "รหัส" ได้ แต่ก็ยังจำได้ว่าแตกต่างจากพื้นที่ข้อมูล '
อีกวิธีหนึ่งที่ใช้ในระบบระดับสูงกว่าคือการมีคอนโทรลเลอร์ที่มีหน่วยความจำบัสสองตัวหนึ่งตัวสำหรับรหัสและอีกตัวหนึ่งสำหรับข้อมูลซึ่งทั้งสองเชื่อมต่อกับหน่วยอนุญาโตตุลาการหน่วยความจำ หน่วยนั้นจะเชื่อมต่อกับระบบย่อยหน่วยความจำต่างๆโดยใช้บัสหน่วยความจำแยกสำหรับแต่ละระบบ รหัสการเข้าถึงระบบย่อยหน่วยความจำหนึ่งอาจถูกประมวลผลพร้อมกันกับการเข้าถึงข้อมูลไปยังระบบอื่น เฉพาะในกรณีที่รหัสและข้อมูลพยายามเข้าถึงระบบย่อยเดียวกันพร้อมกันก็จะต้องรอ
บนระบบที่ใช้วิธีการนี้ส่วนที่ไม่สำคัญต่อประสิทธิภาพของโปรแกรมอาจไม่สนใจขอบเขตระหว่างระบบย่อยหน่วยความจำ หากรหัสและข้อมูลเกิดขึ้นในระบบย่อยหน่วยความจำเดียวกันสิ่งต่าง ๆ จะไม่ทำงานอย่างรวดเร็วเหมือนกับอยู่ในระบบย่อยแยกกัน แต่สำหรับหลาย ๆ ส่วนของโปรแกรมทั่วไปที่ไม่สำคัญ ในระบบทั่วไปจะมีส่วนเล็ก ๆ ของรหัสที่ประสิทธิภาพมีความสำคัญจริง ๆ และจะทำงานกับข้อมูลเพียงเล็กน้อยในระบบ หากมีระบบที่มี RAM 16K ซึ่งแบ่งออกเป็นสองพาร์ติชัน 8K หนึ่งสามารถใช้คำแนะนำ linker เพื่อให้แน่ใจว่ารหัสที่สำคัญประสิทธิภาพอยู่ใกล้จุดเริ่มต้นของพื้นที่หน่วยความจำโดยรวมและข้อมูลที่สำคัญเกี่ยวกับประสิทธิภาพอยู่ใกล้ ปลาย หากขนาดรหัสโดยรวมเพิ่มขึ้นเป็น 9K รหัสภายใน 1K ที่ผ่านมาจะทำงานช้ากว่ารหัสที่อื่น แต่รหัสนั้นจะไม่ทำงานที่สำคัญ ในทำนองเดียวกันถ้ารหัสเป็นเพียง 6K แต่ข้อมูลเพิ่มขึ้นเป็น 9K การเข้าถึงข้อมูล 1K ต่ำสุดจะช้า แต่หากข้อมูลสำคัญเกี่ยวกับประสิทธิภาพอยู่ที่อื่นนั่นจะไม่เป็นปัญหา
โปรดทราบว่าในขณะที่ประสิทธิภาพการทำงานจะเหมาะสมที่สุดหากโค้ดมีขนาดต่ำกว่า 8K และข้อมูลมีขนาดต่ำกว่า 8K การออกแบบระบบหน่วยความจำดังกล่าวข้างต้นจะไม่กำหนดพาร์ติชันที่เข้มงวดระหว่างรหัสและพื้นที่ข้อมูล หากโปรแกรมต้องการข้อมูลเพียง 1K โค้ดอาจโตได้มากถึง 15K หากต้องการรหัส 2K เท่านั้นข้อมูลก็สามารถเติบโตได้ถึง 14K เอนกประสงค์มากกว่าการมีพื้นที่ 8K สำหรับโค้ดและพื้นที่ 8K สำหรับข้อมูลเท่านั้น