SPARC

Tập tin:Sun_UltraSPARCII.jpg|nhỏ|Một vi xử lý Sun UltraSPARC II (1997)
SPARC (Scalable Processor Architecture) là một kiến trúc tập lệnh (ISA) RISC ban đầu được phát triển bởi Sun Microsystems và Fujitsu. Thiết kế của nó bị ảnh hưởng mạnh mẽ bởi hệ thống Berkeley RISC được phát triển trong đầu những năm 1980s. Được phát triển lần đầu tiên vào năm 1986 và được phát hành vào năm 1987, SPARC là một trong những hệ thống RISC thương mại sớm thành công nhất và thành công của nó đã dẫn đến việc giới thiệu các thiết kế RISC tương tự từ một số nhà cung cấp trong suốt thập niên 1980 và 90.
Việc triển khai kiến trúc 32-bit ban đầu (SPARC V7) đã được sử dụng trong các hệ thống workstation và server Sun-4, thay thế các hệ thống Sun-3 trước đó của họ dựa trên loạt bộ vi xử lý Motorola 68000. SPARC V8 đã bổ sung một số cải tiến là một phần của loạt bộ xử lý SuperSPARC được phát hành năm 1992. SPARC V9, phát hành năm 1993, giới thiệu kiến trúc 64 bit và được phát hành lần đầu tiên trong bộ xử lý UltraSPARC của Sun năm 1995. Sau đó, bộ xử lý SPARC đã được sử dụng trong các máy chủ đa xử lý đối xứng (SMP) và Truy cập bộ nhớ không đồng nhất (CC-NUMA) được sản xuất bởi Sun, Solbourne và Fujitsu, và các nhà sản xuất khác.
Thiết kế đã được chuyển cho SPARC International năm 1989, và kể từ đó kiến trúc đã được phát triển bởi các thành viên của nó. SPARC International cũng chịu trách nhiệm cấp phép và quảng bá kiến trúc SPARC, quản lý các nhãn hiệu SPARC (bao gồm SPARC do chính họ sở hữu), avà cung cấp thử nghiệm tuân thủ. SPARC International dự định phát triển kiến trúc SPARC để tạo ra một hệ sinh thái lớn hơn; SPARC đã được cấp phép cho một số nhà sản xuất, bao gồm Atmel, Bipolar Integrated Technology, Cypress Semiconductor, Fujitsu, Matsushita và Texas Instruments. Do SPARC International, SPARC hoàn toàn mở, không độc quyền và miễn phí bản quyền.
Tính đến tháng 9 năm 2017, bộ xử lý SPARC thương mại cao cấp mới nhất là SPARC64 XII của Fujitsu (ra mắt 2017 cho máy chủ SPARC M12 của họ) và SPARC M8 của Oracle ra mắt tháng 9/2017 cho các máy chủ cao cấp của họ.
Thứ Sáu, ngày 1 tháng 9 năm 2017, sau một đợt sa thải bắt đầu tại Oracle Labs vào tháng 11 năm 2016, Oracle đã chấm dứt thiết kế SPARC sau khi hoàn thành M8. Phần lớn nhóm phát triển lõi xử lý ở Austin, Texas, đã bị loại bỏ, cũng như các đội ở Santa Clara, California và Burlington, Massachusetts. Sự phát triển SPARC tiếp tục với việc Fujitsu trở lại vai trò là nhà cung cấp hàng đầu các máy chủ SPARC, với CPU mới do khung thời gian 2020.

**Tính năng**
Kiến trúc SPARC bị ảnh hưởng nặng nề bởi các thiết kế RISC trước đó, bao gồm RISC I và II từ University of California, Berkeley và IBM 801. Các thiết kế RISC ban đầu này được tối giản, bao gồm ít tính năng hoặc mã op nhất có thể và hướng tới thực hiện các hướng dẫn với tốc độ gần như một lệnh trong mỗi chu kỳ. Điều này làm cho chúng tương tự như kiến trúc MIPS theo nhiều cách, bao gồm cả việc thiếu các hướng dẫn như nhân hoặc chia. Một tính năng khác của SPARC bị ảnh hưởng bởi phong trào RISC sớm này là branch delay slot.
Bộ xử lý SPARC thường chứa tới 160 thanh ghi mục đích chung. Theo đặc tả kỹ thuật "Oracle SPARC Architecture 2015" một triển khai "có thể chứa từ 72 đến 640 thanh ghi 64-bit mục đích chung" Tại bất kỳ thời điểm nào, chỉ có 32 trong số chúng được hiển thị ngay lập tức đối với phần mềm - 8 là một tập hợp các thanh ghi toàn cục (một trong số đó, g0, is hard-wired đến zero, vì vậy chỉ có bảy trong số chúng có thể sử dụng làm thanh ghi) và 24 cái còn lại là từ ngăn xếp thanh ghi. 24 thanh ghi này tạo thành cái được gọi là cửa sổ thanh ghi và tại chức năng lời gọi/trả về, cửa sổ này được di chuyển lên và xuống ngăn xếp thanh ghi. Mỗi cửa sổ có 8 thanh ghi cục bộ và chia sẻ 8 thanh ghi với mỗi cửa sổ liền kề. Các thanh ghi dùng chung được sử dụng để truyền các tham số hàm và trả về giá trị, và các thanh ghi cục bộ được sử dụng để giữ lại các giá trị cục bộ qua các lệnh gọi hàm.
"Khả năng mở rộng" trong SPARC xuất phát từ thực tế là đặc tả SPARC cho phép các triển khai mở rộng từ các bộ xử lý nhúng lên thông qua các bộ xử lý máy chủ lớn, tất cả đều chia sẻ cùng một tập lệnh (không đặc quyền). Một trong những tham số kiến trúc có thể mở rộng là số lượng cửa sổ thanh ghi được thực hiện; đặc tả cho phép thực hiện từ ba đến 32 cửa sổ, do đó, việc triển khai có thể chọn thực hiện tất cả 32 để cung cấp hiệu quả ngăn xếp cuộc gọi tối đa hoặc chỉ thực hiện ba để giảm chi phí và độ phức tạp của thiết kế hoặc thực hiện một số số giữa chúng. Các kiến trúc khác bao gồm các tính năng tệp đăng ký tương tự bao gồm Intel i960, IA-64, và AMD 29000.
Các kiến trúc đã trải qua một số sửa đổi. Nó đã đạt được chức năng nhân và phân chia phần cứng trong Version 8.osnews-gcc 64-bit (địa chỉ và dữ liệu) đã được thêm vào đặc tả SPARC Version 9 được phát hành năm 1994.
Trong SPARC Version 8, file thanh ghi dấu phẩy động có 16 thanh ghi chính xác kép. Mỗi trong số chúng có thể được sử dụng như hai thanh ghi chính xác đơn, cung cấp tổng cộng 32 thanh ghi chính xác đơn. Một cặp số chẵn của các thanh ghi chính xác kép có thể được sử dụng như một thanh ghi chính xác tứ giác, do đó cho phép 8 thanh ghi chính xác bốn. SPARC Version 9 đã thêm 16 thanh ghi chính xác gấp đôi (cũng có thể được truy cập dưới dạng 8 thanh ghi chính xác quad), nhưng các thanh ghi bổ sung này không thể được truy cập dưới dạng các thanh ghi chính xác đơn. Không có CPU SPARC nào thực hiện các hoạt động chính xác bốn phần cứng vào năm 2004.
Các tập lệnh cộng và trừ được gắn thẻ thực hiện các phép cộng và trừ trên các giá trị kiểm tra xem hai bit dưới cùng của cả hai toán hạng là 0 và báo cáo tràn nếu không. Điều này có thể hữu ích trong việc thực hiện thời gian chạy cho ML, Lisp và các ngôn ngữ tương tự có thể sử dụng định dạng số nguyên được gắn thẻ.
The endianness of the 32-bit SPARC V8 architecture is purely big-endian. The 64-bit SPARC V9 architecture uses big-endian instructions, but can access data in either big-endian or little-endian byte order, chosen either at the application instruction (load-store) level or at the memory page level (via an MMU setting).  The latter is often used for accessing data from inherently little-endian devices, such as those on PCI buses.

**Lịch sử**
Đã có ba phiên bản chính của kiến trúc. Phiên bản được xuất bản đầu tiên là SPARC Version 7 (V7) 32 bit năm 1986. SPARC Version 8 (V8), định nghĩa kiến trúc SPARC nâng cao, được phát hành vào năm 1990. Sự khác biệt chính giữa V7 và V8 là bổ sung các tập lệnh nhân và chia số nguyên và nâng cấp từ số học dấu phẩy động "extended precision" 80 bit thành số học "quad-precision" 128 bit. SPARC V8 đóng vai trò là nền tảng cho IEEE Standard 1754-1994, một tiêu chuẩn của IEEE cho kiến trúc vi xử lý 32 bit.
SPARC Version 9, kiến trúc SPARC 64-bit, phát hành bởi SPARC International năm 1993. Nó được phát triển bởi SPARC Architecture Committee gồm có Amdahl Corporation, Fujitsu, ICL, LSI Logic, Matsushita, Philips, Ross Technology, Sun Microsystems, và Texas Instruments.
Thông số kỹ thuật mới hơn luôn tuân thủ với thông số kỹ thuật SPARC V9 Cấp 1 đầy đủ.
Vào năm 2002 SPARC Joint Programming Specification 1 (JPS1) đã được Fujitsu và Sun phát hành, mô tả các chức năng của bộ xử lý được triển khai giống hệt nhau trong CPU của cả hai công ty ("Commonality"). Các CPU đầu tiên phù hợp với JPS1 làUltraSPARC III của Sun và SPARC64 V của Fujitsu. Các chức năng không thuộc phạm vi của JPS1 được ghi lại cho từng bộ xử lý trong "Implementation Supplements".
Vào cuối năm 2003, JPS2 đã được phát hành để hỗ trợ CPU đa lõi. Các CPU đầu tiên phù hợp với JPS2 là UltraSPARC IV của Sun và SPARC64 VI của Fujitsu.
Đầu năm 2006, Sun đã phát hành một đặc tả kiến trúc mở rộng, UltraSPARC Architecture 2005. Điều này không chỉ bao gồm các phần không đặc quyền và hầu hết các phần đặc quyền của SPARC V9, mà còn tất cả các phần mở rộng kiến trúc được phát triển qua các thế hệ bộ xử lý UltraSPARC III, IV IV+ cũng như các tiện ích mở rộng CMT bắt đầu bằng việc triển khai  UltraSPARC T1:- Phần mở rộng tập lệnh VIS 1 và VIS 2 và thanh ghi GSR được liên kết- nhiều cấp độ thanh ghi toàn cục, được kiểm soát bởi thanh ghi GL- Kiến trúc 64-bit MMU của Sun- tập lệnh đặc quyền ALLCLEAN, OTHERW, NORMALW, and INVALW- truy cập vào thanh ghi VET bây giờ là siêu đặc quyền- tập lệnh SIR hiện đang được ưu tiên
Năm 2007, Sun phát hành cập nhật đặc tả, UltraSPARC Architecture 2007, mà việc triển khai UltraSPARC T2 tuân thủ.
Tháng 8/2012, Oracle Corporation đã có sẵn một đặc điểm kỹ thuật mới, Oracle SPARC Architecture 2011, ngoài bản cập nhật tổng thể của tài liệu tham khảo, thêm các phần mở rộng tập lệnh VIS 3 và chế độ hyperprivileged vào đặc tả năm 2007.
Vào tháng 10 năm 2015, Oracle đã phát hành SPARC M7, bộ xử lý đầu tiên dựa trên đặc tả kỹ thuật mới của Oracle SPARC Architecture 2015.  Bản sửa đổi này bao gồm các phần mở rộng tập lệnh VIS 4 ivà mã hóa được hỗ trợ phần cứng và bộ nhớ được bảo mật bằng silicon (SSM) 
Kiến trúc SPARC đã cung cấp khả năng tương thích nhị phân ứng dụng liên tục từ triển khai SPARC V7 đầu tiên vào năm 1987 thông qua các triển khai Kiến trúc Sun UltraSPARC.
Trong số các triển khai SPARC khác nhau, SuperSPARC và UltraSPARC-I của Sun rất phổ biến và được sử dụng làm hệ thống tham chiếu cho SPEC CPU95 và CPU2000 benchmarks. UltraSPARC-II 296 MHz là hệ thống tham chiếu cho SPEC CPU2006 benchmark.

**Giấy phép kiến trúc SPARC**
Các tổ chức sau đây đã được cấp phép kiến trúc SPARC:- Afara Websystems- Bipolar Integrated Technology (BIT)- Cypress Semiconductor- European Space Research and Technology Center (ESTEC)- Fujitsu (và công ty con Fujitsu Microelectronics của nó)- Gaisler Research- HAL Computer Systems- Hyundai- LSI Logic- Matra Harris Semiconductors (MHS)- Matsushita Electrical Industrial Co.- Meiko Scientific- Metaflow Technologies- Philips Electronics- Prisma- Ross Technology- Solbourne Computer- Systems & Processes Engineering Corporation (SPEC)- TEMIC- Weitek

**Các triển khai**
Ghi chú:group="note"

**Các hệ điều hành hỗ trợ**
Các máy SPARC thường sử dụng SunOS, Solaris, của Sun hoặc OpenSolaris bao gồm các phân nhánh illumos và OpenIndiana, nhưng các hệ điều hành khác cũng có thể được dùng như NeXTSTEP, RTEMS, FreeBSD, OpenBSD, NetBSD, và Linux.
Năm 1993, Intergraph thông báo một port của Windows NT đến kiến trúc SPARC, nhưng nó sau đó đã bị hủy bỏ.
Tháng 10/2015, Oracle thông báo một "Linux for SPARC reference platform".

**Các triển khai nguồn mở**
Một số triển khai mã nguồn mở hoàn toàn của kiến trúc SPARC tồn tại:- LEON, triển khai SPARC V8 32 bit, chịu được bức xạ, được thiết kế đặc biệt cho sử dụng trong không gian. Mã nguồn được viết bằng VHDL và được cấp phép theo GPL. - OpenSPARC T1, phát hành năm 2006, một triển khai 64-bit, 32 luồng tuân theo UltraSPARC Architecture 2005 và SPARC Version 9 (Level 1). Mã nguồn được viết trong Verilog, vdduwwocj cấp phép dưới nhiều giấy phép. Mã nguồnOpenSPARC T1 được cấp phép nhiều nhất theo GPL. Nguồn dựa trên các dự án nguồn mở hiện tại sẽ tiếp tục được cấp phép theo giấy phép hiện tại của họ. Các chương trình nhị phân được cấp phép theo thỏa thuận cấp phép phần mềm nhị phân.- S1, một lõi CPU tương thích Wishbonedựa trên thiết kế của OpenSPARC T1. Nó là một lõi UltraSPARC v9 có khả năng 4-way SMT. Giống T1, mã nguồn được cấp phép theo GPL.- OpenSPARC T2, phát hành năm 2008, một triển khai 64 bit, 64 luồng tuân theo UltraSPARC Architecture 2007 và SPARC Version 9 (Level 1). mã nguồn được viết trong Verilog, và được cấp phép theo nhiều giấy phép. Chủ yếu mã nguồn OpenSPARC Tdduwwocj cấp phép theo GPL. Nguồn dựa trên các dự án nguồn mở hiện tại sẽ tiếp tục được cấp phép theo giấy phép hiện tại của họ. Các chương trình nhị phân được cấp phép theo thỏa thuận cấp phép phần mềm nhị phân.
Một trình giả lập mã nguồn mở hoàn toàn cho kiến trúc SPARC cũng tồn tại:-  RAMP Gold date=2021-08-22 , một triển khai 32-bit, 64 luồng SPARC Version 8, thiết kế cho các trình giả lập dựa trên FPGA. RAMP Gold được viết bởi ~36,000 dòng lệnh SystemVerilog, và được cấp phép theo giấy phép BSD.

**Siêu máy tính**
Đối với HPC, Fujitsu xây dựng bộ xử lý SPARC64 fx chuyên dụng với bộ phần mở rộng hướng dẫn mới, được gọi là HPC-ACE (High Performance Computing – Arithmetic Computational Extensions).
K Computer của Fujitsu xếp thứ 1 trong danh sách TOP500 siêu máy tính từ tháng 6 năm 2011 đến tháng 11 năm 2011. Nó kết hợp 88,128 CPU SPARC64 VIIIfx, mỗi CPU có 8 lõi, với tổng cộng 705,024 lõi—gần như gấp đôi so với bất kỳ hệ thống nào khác trong TOP500 tại thời điểm đó. K Computer mạnh hơn năm hệ thống tiếp theo trong danh sách cộng lại và có tỷ lệ hiệu năng trên công suất cao nhất so với bất kỳ hệ thống siêu máy tính nào.Nó cũng xếp thứ 6 trong danh sách Green500 tháng 6 năm 2011, với số điểm 824.56 MFLOPS/W. Trong phiên bản TOP500 tháng 11 năm 2012, K Computer xếp thứ 3, sử dụng nhiều điện nhất trong số ba máy tính hàng đầu. Nó xếp thứ 85 trên bản phát hành Green500 tương ứng. Các bộ xử lý HPC mới hơn, IXfx và XIfx,đã được đưa vào các siêu máy tính PRIMEHPC FX10 vàFX100.
Tianhe-2 (số 1 TOP500 tính đến tháng 11/2014) có một số nút với bộ xử lý dựa trên Galaxy FT-1500 OpenSPARC được phát triển tại Trung Quốc. Tuy nhiên, những bộ xử lý đó không đóng góp vào LINPACK score.

**Xem thêm**
 ERC32 — dựa trên các đặc tả SPARC V7- Ross Technology, Inc. — một nhà phát triển bộ vi xử lý SPARC trong những năm 1980 và 1990- R1000 — bộ vi xử lý lõi tứ của Nga dựa trên đặc tả kỹ thuật SPARC V9- Galaxy FT-1500 — bộ xử lý OpenSPARC 16 lõi của Trung Quốc

**Chú thích**

**Liên kết ngoài**
  SPARC International, Inc.- Oracle SPARC Processor Documentation at the Wayback Machine (archived 2019-10-13)-  SPARC Technical Documents-  OpenSPARC Architecture specification-  Hypervisor/Sun4v Reference Materials- Fujitsu SPARC64  V, VI, VII, VIIIfx, IXfx Extensions and  X / X+ Specification- Sun – UltraSPARC Processors Documentation at the Wayback Machine (archived 2010-01-14)- Sun – FOSS Open Hardware Documentation at the Wayback Machine (archived 2011-12-09)- OpenSPARC at the Wayback Machine (archived 2011-02-27)- Oracle SPARC and Solaris Public Roadmap at the Wayback Machine (archived 2018-05-25)-  Fujitsu SPARC Roadmap-  SPARC processor images and descriptions-  The Rough Guide to MBus Modules (SuperSPARC, hyperSPARC)- SPARC Version 9, lecture by David Ditzel- Computers/Hardware/Components/Processors/SPARC
Thể loại:Kiến trúc tập lệnh