Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Hardware register
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Short description|Circuit components acting like computer memory}} {{Use American English|date = April 2019}} In [[digital electronics]], especially [[computing]], '''hardware registers''' are circuits typically composed of [[Flip-flop (electronics)|flip-flops]], often with many characteristics similar to [[Semiconductor memory |memory]], such as:{{Citation needed|date=March 2023}} * Using an [[Memory-mapped I/O and port-mapped I/O|memory or port address]] to select a particular register in a manner similar to a [[memory address]].<ref>{{Cite book |last1=RAJARAMAN |first1=V. |url=https://books.google.com/books?id=hZQ4jAdpUAAC&pg=SA3-PA37 |title=COMPUTER ORGANIZATION AND ARCHITECTURE |last2=RADHAKRISHNAN |first2=T. |date=2007-06-01 |publisher=PHI Learning Pvt. Ltd. |isbn=978-81-203-3200-3 |pages=38 |language=en}}</ref> * the ability to read or write one or multiple [[bit (computing)|bit]]s at a time. Their distinguishing characteristic, however, is that they also have special hardware-related functions beyond those of ordinary memory. So, depending on the point of view, hardware registers are like memory with additional hardware-related functions; or, memory circuits are like hardware registers that just store data.{{Citation needed|date=March 2023}} Hardware registers are used in the [[Interface (computing)|interface]] between [[software]] and [[peripherals]]. Software writes them to send information to the device, and reads them to get information from the device. Some hardware devices also include registers that are not visible to software, for their internal use. Depending on their complexity, modern hardware devices can have many registers. Standard [[integrated circuits]] typically document their externally-exposed registers as part of their [[electronic component]] [[datasheet]]. == Functionality == Typical uses of hardware registers include: * ''configuration'' and start-up of certain features, especially during initialization * ''buffer storage'' e.g. video memory for [[graphics card]]s * [[input/output]] (I/O) of different kinds * determining the source of an [[interrupt]] * ''status reporting'' such as whether a certain event has occurred in the hardware unit, for example a modem status register or a line status register.<ref> {{cite book | last = Bose | first = Sanjay K. | title = Hardware And Software Of Personal Computers | url = https://books.google.com/books?id=CJDTFXwqcOsC | access-date = 2012-09-10 | year = 2007 | publisher = New Age International | isbn = 9788122403039 | page = 54 | quote = Once the INS 8250 has been properly initialized, we should make proper use of the Modem Status register (MSR), Line Status register (LSR) and the Interrupt Identification register (IIR) for controlling the device during actual operation. }} </ref> Reading a hardware register in "peripheral units" β [[computer hardware]] outside the CPU β involves accessing its [[memory-mapped I/O]] address or [[port-mapped I/O]] address with a "load" or "store" instruction, issued by the processor. Hardware registers are addressed in words, but sometimes only use a few [[bit]]s of the word read in to, or written out to the register. Commercial design tools simplify and automate memory-mapped register specification and code generation for [[Hardware description language|hardware]], [[firmware]], [[Hardware Verification Language|hardware verification]], testing and documentation. Registers can be read/write, read-only or write-only. [[Write-only_memory_(engineering)|Write-only registers]] are suitable for registers that cause a transient action when written but store no persistent data to be read, such as a "reset a peripheral" register. They may be a viable option in designs that cannot afford gates for the relatively large logic circuit and signal routing needed for register data readback, such as the [[Atari 2600]] games console's [[Television Interface Adaptor|TIA]] chip. However, write-only registers make debugging more difficult<ref>http://www.microsoft.com/whdc/resources/MVP/xtremeMVP_hw.mspx#ETB Microsoft MVP: If every hardware engineer just understood that... β¦write-only registers make debugging almost impossible] </ref> and lead to the [[read-modify-write]] problem so read/write registers are preferred. On PCs, write-only registers made it difficult for the [[Advanced Configuration and Power Interface]] (ACPI) to determine the device's state when entering [[sleep mode]] in order to restore that state when exiting sleep mode.<ref> [http://www.microsoft.com/whdc/archive/SpecGuide.mspx Microsoft "Guidelines for Bus and Device Specifications"]</ref> == Register varieties == {{noref|section|date=August 2016}} The hardware registers inside a [[central processing unit]] (CPU) are called '''[[processor register]]s'''. '''Strobe registers''' have the same interface as normal hardware registers, but instead of storing data, they trigger an action each time they are written to (or, in rare cases, read from). They are a means of [[signaling]]. Registers are normally measured by the number of bits they can hold, for example, an "[[8-bit]] register" or a "[[32-bit]] register". Designers can implement registers in a wide variety of ways, including: * [[register file]]s * standard [[Static random-access memory|SRAM]] * individual [[Flip-flop (electronics)|flip-flop]]s * high-speed [[core memory]] In addition to the "programmer-visible" registers that can be read and written with software, many chips have [[internal register]]s that are used for [[state machines]] and [[Pipeline (computing)|pipelining]]; for example, [[registered memory]]. == Standards == SPIRIT IP-XACT and DITA SIDSC [[XML]] define standard XML formats for [[memory-mapped register]]s.<ref>{{Cite web |url=http://www.registerbits.com/hardwaresoftware-register-specification-code-generation-0 |title=blog entry on IP-XACT format |access-date=2009-03-17 |archive-url=https://web.archive.org/web/20090309175039/http://www.registerbits.com/hardwaresoftware-register-specification-code-generation-0 |archive-date=2009-03-09 |url-status=dead }}</ref><ref> [http://www.spiritconsortium.org/XMLSchema/SPIRIT/1.5 IP-XACT Schema... see component XSD] </ref><ref> [http://wiki.oasis-open.org/dita/RegisterSpecialization DITA Semiconductor register spec] </ref> == See also == * [[Processor register]] * [[Register-transfer level]] (RTL) == References == {{reflist}} {{DEFAULTSORT:Hardware Register}} [[Category:Control flow]] [[Category:Central processing unit]] [[Category:Digital registers]] [[pt:Registro]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:Citation needed
(
edit
)
Template:Cite book
(
edit
)
Template:Cite web
(
edit
)
Template:Noref
(
edit
)
Template:Reflist
(
edit
)
Template:Short description
(
edit
)
Template:Use American English
(
edit
)