FPGA

FPGA (ראשי תיבות של "Field-Programmable Gate Array") הוא סוג של מעגל משולב, אשר ניתן להגדיר ולשנות את תפקודו לאחר הייצור, בתהליך תכנות הדומה להתקנת תוכנה. הגדרת תפקוד הרכיב מתבצעת על ידי הזנה של תרשים לוגי או על ידי שפות לתיאור מעגלים (כדוגמת VHDL או Verilog). מוצר ה-FPGA הראשון פותח ושווק בשנת 1985 על ידי חברת זיילינקס. היתרונות בשימוש ב־FPGA הם: מאחר שרכיבי FPGA ניתנים לתכנות, ניתן לעדכן את התוכנה שלהם גם לאחר שלב הייצור ואפילו לאחר שהמוצר מגיע אל לקוח הקצה (כדוגמת עדכוני קושחה). שלב התכנון של המעגל האלקטרוני פשוט יותר, והוא כולל בעיקר תכן של שילוב רכיב ה־FPGA במעגל מודפס (בניגוד לתכנון פרטני של מעגל אלקטרוני דיגיטלי פיזי, העוסק בכל פרטי הלוגיקה הנדרשת). ניתן להתחיל בתהליך ייצור המעגלים המודפסים עוד לפני שהלוגיקה נכתבה או הושלמה. ניתן לחלק את העבודה בין צוותים שונים, האחד עובד על תכנון המעגלים הפיזיים, והשני על המעגלים הלוגיים שיטענו לתוך ה־FPGA. לחלופין, ניתן לחלק את זמן הפיתוח של צוות בודד, שראשית מתכנן את המעגל המודפס, ובזמן שזה נמצא בתהליכי ייצור, כותב את הלוגיקה עבור ה־FPGA. תהליך הפיתוח הוא מהיר ביותר מאחר שאין צורך בתהליך ייצור כלשהו ולכן מתאים מאוד לפיתוח של אב טיפוס. ה־FPGA מורכב מיחידות לוגיות ניתנות לתכנות ומרשת של אמצעים לחיבור ולניתוק בין היחידות השונות. בטעינת ה־FPGA מקבלות היחידות הגדרה לאופי פעולתן, והיחידות מתחברות ליחידות אחרות, בצורה שמממשת את המעגל הלוגי הכולל. רכיבי FPGA יכולים לשמש למגוון פונקציות, החל מלוגיקות פשוטות כגון שערים לוגיים וכלה ביכולות מורכבות כגון דלגלגים ומרחבי זיכרון. ה־FPGA התחיל את דרכו כמקביל ומתחרה ל־CPLD, אך ככל שהגודל, היכולות, ומהירות הפעולה של ה־FPGA גדלו, גדל גם נתח השוק של רכיבים מסוג זה, וכיום מקובל למצוא רכיבי FPGA כמערכת על שבב (SoC). נהוג להשתמש ברכיבי FPGA עבור מעגלים שנועדו לבצע משימות בעלות אותו אופי, אך שונות אחת מהשנייה בלוגיקה הפנימית (ולא בממשקים החיצוניים), ואשר מיוצרים בכמויות קטנות. במעגלים אלו, העלות של התכנון והייצור של כל דגם היא גבוהה יחסית, ולכן יש היגיון לשאוף לפיתוח של מעגל חשמלי בעל ממשקים משותפים שיתאימו למספר מוצרים שונים, ובכך להגדיל את כמות המעגלים שמיוצרים (ולהפחית את ה־NRE למעגל כפי שקיים ב־ASIC, וכתוצאה מכך את העלות למעגל). בזכות המבנה הפנימי של רכיבי ה־FPGA, הם שימושיים במיוחד בתחומים הדורשים עיבוד מקבילי, וניתן לבצע בהם כמות גדולה יחסית של פעולות וחישובים, אפילו כאשר קצב אות השעון נמוך יחסית. יכולת זו שימושית במיוחד בתחום פיצוח הצפנות, ואף פתחה אפשרות לסוג חדש של עיבוד, שבו רכיבי ה־FPGA מסייעים למעבד הראשי בביצוע פעולות מסוימות, לפעמים על פי הגדרת תצורה ספציפית, שנטען לתוך ה־FPGA מיד לפני ביצוע החישוב ב־FPGA. המגבלה העיקרית בשילוב רכיבי FPGA במחשבים היא יכולת הביצועים מבחינת מהירות והספק חשמלי בהשוואה למעגלי VLSI בתכנון מלא וב־ASIC ומגבלת הסיבוכיות האפשרית הנמוכה ב־FPGA, בהשוואה לאפשרויות בתוכנה רגילה. אחת הדרכים להתמודד עם מגבלה זו היא להפחית את הדיוק היכן שניתן, על מנת לנצל את המקביליות של ה־FPGA. מגבלה נוספת היא זמן ההכנה הארוך יחסית (בהשוואה לתוכנה רגילה) מרגע שהוגדר שינוי מסוים בתצורת הטעינה של ה־FPGA, עד לרגע שניתן להשתמש בתצורה הזו. עוד לפני ה-FPGA היו קיימים Programmable ROM ‏(PROM) ו-Programmable logic device ‏(PLD), שאותם היה ניתן לתכנת במפעל. ב-1983 נוסדה חברת אלטרה וב-1984 החלה לייצר מכשיר ניתן לתכנות מחדש בשם EP300 באמצעות מחיקה של תאי EPROM. ב-1985 מייסדי זיילינקס (Xilinx), רוס פרימן וברנרד וונדרשמידט פיתחו מערך שערים (gate array) שניתן לתכנות מחדש - XC2064 שבו היו 64 בלוקים לוגים קונפיגורבילים. במהלך שנות ה-90 של המאה ה-20 חלה צמיחה משמעותית ב-FPGA. בתחילת העשור שימשו בעיקר לתקשורת. חברות כדוגמת מיקרוסופט החלו להשתמש ב-FPGA גם לצורך מערכות עם ביצועים גבוהים הדורשות כוח עיבוד רב (למשל במרכזי נתונים) הודות ליתרון של ביצועים לוואט, כשמיקרוסופט עושה בהם שימוש מ-2014 לצורך מנוע החיפוש בינג. VLSI ASIC VHDL Verilog