Patent Description:
One or more semiconductor memory devices may be used in data storage devices. Examples of such data storage devices include solid state drives (SSDs). These types of data storage devices may have various design and/or performance advantages over hard disk drives (HDDs). For example, such data storage devices may have no moving mechanical parts, higher data access speeds, improved stability, improved durability, and/or reduced power consumption. Various systems, e.g., a laptop computer, a car, an airplane, a drone, etc., have adopted the storage devices. If the data storage device does not satisfy required performance, the entire performance of the system may be degraded. If the operational speed of the data storage device is increased beyond the required operational speed, power consumption of the data storage device and the system including the data storage device may be increased unnecessarily.

<CIT> discloses: A packet transmitter and a packet receiver are connected to each other via a communication circuit. The packet receiver has a receive buffer observation section that observes the usage of the receive buffer section, a clock control section that determines the clock adjustment amount by determining the difference from the external clock based on the usage of the receive buffer section and transmits it over the communication circuit, and a packet transmitter has a control section. The control section inputs the clock adjustment amount from the communication circuit to determine the control value, a D/A converter that converts the control value to an input control voltage, and a VCXO section that generates a basic clock with a frequency determined by the input control voltage. The VCXO section generates a clock to be supplied to an external continuous data output device based on the basic clock generated by the VCXO section.

The present invention is defined in the independent claim. Specific embodiments are defined in the dependent claims.

Disclosed is a system capable of efficiently controlling transfer flow between a transmission device and a reception device.

The system includes a transmission device and a reception device that are connected through a link. The reception device includes a reception buffer configured to receive and store transaction layer packets and a reception flow controller configured to generate flow control packets by monitoring an occupation state of the reception buffer. The transmission device includes a transmission buffer, a transmission flow controller and a dynamic frequency controller. The transmission buffer stores pending transaction layer packets to be transferred to the reception device. The transmission flow controller controls a flow of transaction layer packets to be transferred to the reception device based on the flow control packets received from the reception device. The dynamic frequency controller controls a frequency of an internal clock signal of the transmission device by monitoring a state of the transmission buffer and a state of the transmission flow controller.

The system reduces power consumption of the transmission device and prevent a transfer delay from the transmission device to the reception device by controlling the frequency of the internal clock signal of the transmission device based on the monitoring result of the state of the transmission buffer and the state of the transmission flow controller.

Exemplary embodiments of the present disclosure will be more clearly understood from the following detailed description taken in conjunction with the accompanying drawings.

Various exemplary embodiments will be described more fully hereinafter with reference to the accompanying drawings, in which some exemplary embodiments are shown. In the drawings, like numerals refer to like elements throughout. The repeated descriptions may be omitted as redundant.

In the following descriptions, numerous specific details are set forth, such as examples of specific types of processors and system configurations, specific hardware structures, specific architectural and micro architectural details, specific register configurations, specific instruction types, specific system components, specific measurements/heights, specific processor pipeline stages and operation etc. in order to provide a thorough understanding of this disclosure. It will be apparent, however, to one skilled in the art that these specific details need not be employed to practice the principles and solutions discussed in this disclosure.

Among various interconnect fabric architectures, exemplary embodiments are described based on a Peripheral Component Interconnect (PCI) Express (PCIe) architecture. A primary goal of PCIe is to enable components and devices from different vendors to inter-operate in an open architecture, spanning multiple market segments; Clients (Desktops and Mobile), Servers (Standard and Enterprise), and Embedded and Communication devices. PCI Express is a high performance, general purpose I/O interconnect defined for a wide variety of future computing and communication platforms. Some PCI attributes, such as its usage model, load-store architecture, and software interfaces, have been maintained through its revisions, whereas previous parallel bus implementations have been replaced by a highly scalable, fully serial interface. The more recent versions of PCI Express take advantage of advances in point-to-point interconnects, Switch-based technology, and packetized protocol to deliver new levels of performance and features. Power Management, Quality Of Service (QoS), Hot-Plug/Hot-Swap support, Data Integrity, Error Handling and Credit-based Flow Control are among some of the advanced features supported by PCI Express.

In the previous PCI schemes, a transmission device does not know a state of a reception buffer in a reception device. If a transaction is halted due to fullness of the reception buffer, the transmission device continues resending the transaction until the transaction is completed. Thus a particular device may occupy a system bus for a long time and performance of the system may be seriously degraded.

According to the improved PCIe schemes, the transmission device may check the state of the reception port before transmitting a transaction packet. The end point devices such as a host device and a storage device may use a credit-based control mechanism. Each reception port may transfer an entire size of the reception buffer during system initialization, and the reception port periodically transfers the number of credits indicating the remained capacity of the reception buffer to the transmission port to share the occupation state of the reception buffer.

When the allocated size of the reception buffer is not sufficient, the transmission device (e.g., a storage device) may not transfer the transaction packets to the reception device (e.g., a host device), and a transfer delay occurs until the transmission device receives the undated information on the flow control credit. Such transfer delay may degrade performance of the storage device and the entire system.

It is expected that the performance degradation of the end point device such as the storage device may be deepen due to restriction of the buffer size of the host device according to an increase of operation speed of interconnect architectures such as PCIe. Exemplary embodiments are provided to improve the performance degradation by monitoring a flow control credit update logic, that is, a transmission flow controller at the end point device.

<FIG> is a block diagram illustrating a system according to exemplary embodiments.

Referring to <FIG>, a system <NUM> may include a first device DEV1 <NUM> and a second device DEV2 <NUM> that are connected through a link <NUM>. <FIG> illustrates only the elements for describing exemplary embodiments, and each of the first and second devices <NUM> and <NUM> may further include various other elements depending on its own functionality.

The first device <NUM> may include a first receiver RX1, a first reception buffer RBF1, a first reception flow controller RFC1, a first transmitter TX1, a first transmission buffer TBF1, a first transmission flow controller TFC1, a first dynamic frequency controller DFC1 and a first phase-locked loop PLL1. The first receiver RX1, the first reception buffer RBF1 and the first reception flow controller RFC1 correspond to a reception block to receive data and/or signals (hereinafter, referred to as packets) transferred from the second device <NUM> through the link <NUM>, and the first transmitter TX1, the first transmission buffer TBF1, the first transmission flow controller TFC1 and the first dynamic frequency controller DFC1 correspond to a transmission block to transmit packets to the second device <NUM> through the link <NUM>.

The second device <NUM> may include a second receiver RX2, a second reception buffer RBF2, a second reception flow controller RFC2, a second transmitter TX2, a second transmission buffer TBF2, a second transmission flow controller TFC2, a second dynamic frequency controller DFC2 and a second phase-locked loop PLL2. The second receiver RX2, the second reception buffer RBF2 and the second reception flow controller RFC2 correspond to a reception block to receive packets transferred from the first device <NUM> through the link <NUM>, and the second transmitter TX2, the second transmission buffer TBF2, the second transmission flow controller TFC2 and the second dynamic frequency controller DFC2 correspond to a transmission block to transmit packets to the first device <NUM> through the link <NUM>.

In some exemplary embodiments, the first device <NUM> and the second device <NUM> may be connected through a peripheral component interconnect express (PCIe) link <NUM> according to PCIe standards,.

Each of the reception buffers RBF1 and RBF2 may receive and store transaction layer packets that are transferred through the PCIe link <NUM>. Each of the reception flow controllers RFC1 and RFC2 may generate flow control packets by monitoring an occupation state of each of the reception buffers RBF1 and RBF2.

Each of the transmission buffers TBF1 and TBF2 may store pending transaction layer packets to be transferred through the PCIe link <NUM>. Each of the transmission flow controllers TFC1 and TFC2 may control a flow of transaction layer packets transferred through the PCIe link <NUM> based on the flow control packets received through the PCIe link <NUM>. Each of the dynamic frequency controllers DFC1 and DFC2 may control a frequency of each of internal clock signals PCLK1 and PCLK2 of the first device <NUM> and second device <NUM> by monitoring a state of each of the transmission buffers TBF1 and TBF2 and a state of each of the transmission flow controllers TFC1 and TFC2.

<FIG> illustrates an exemplary embodiment in which each of the first device <NUM> and the second device <NUM> includes the reception block and the transmission block exchanges packets through the bi-directional link <NUM> and thus functions as a transceiver device.

When the packets are transferred from the second device <NUM> to the first device <NUM>, the first device <NUM> corresponds to a reception device and the second device <NUM> corresponds to a transmission device. In contrast,when the packets are transferred from the first device <NUM> to the second device <NUM>, the first device <NUM> corresponds to a transmission device and the second device <NUM> corresponds to a reception device.

According to exemplary embodiments, the first device <NUM> and the second device <NUM> may connected through a uni-directional link. In such a case, one of the first device <NUM> and the second <NUM> device may include only the transmission block and the other of the first device <NUM> and the second <NUM> device may include only the reception block.

Hereinafter, exemplary embodiments are described which are based on a relationship between one reception device and one transmission device and it will be understood that such exemplary embodiment may be applied to two transceiver devices such as the first device <NUM> and the second device <NUM> performing in the bi-directional communication mode as illustrated in <FIG>.

<FIG> is a flowchart illustrating a method of controlling operation of a system according to exemplary embodiments.

Referring to <FIG> and <FIG>, by a reception flow controller (e.g., RFC1 or RFC2 in <FIG>) included in a reception device (e.g., <NUM> and <NUM> in <FIG>), flow control packets may be generated by monitoring an occupation state of a reception buffer (e.g., RFB <NUM> or RBF2 in <FIG>) included in the reception device (S100).

By a transmission flow controller (e.g., TFC2 or TFC1 in <FIG>) included in a transmission device (e.g., <NUM> or <NUM> in <FIG>), a flow of transaction layer packets to be transferred to the reception device may be controlled based on the flow control packets received from the reception device (S200).

By a dynamic frequency controller (e.g., DFC2 or DFC1 in <FIG>) included in the transmission device, a frequency of an internal clock signal (e.g., PCLK2 or PCLK1 in <FIG>) of the transmission device may be controlled by monitoring a state of a transmission buffer (e.g., TBF2 or TBF1 in <FIG>) configured to store pending transaction layer packets to be transferred to the reception device and a state of the transmission flow controller (S300).

In some exemplary embodiments, the reception flow controller may generate an allocated credit AC corresponding to the number of the transaction layer packets that are output from the reception buffer and processed by an internal circuit and then generate the flow control packets including the allocated credit AC. In addition, the reception flow controller may generate a received credit RC corresponding to the number of the transaction layer packets that are input to and stored in the reception buffer. The reception flow controller may monitor error occurrence by comparing the allocated credit AC and the received credit RC.

The transmission flow controller may generate a limit credit LC that is updated based on the allocated credit AC included on the flow control packets and a consumed credit CC corresponding to the number of the transaction layer packets that are transferred to the reception device. The transmission flow controller may determine whether a storage space of the reception buffer is insufficient to store the transaction layer packets, based on a difference between the limit credit LC and the consumed credit CC. The transmission flow controller blocks transmission of the transaction layer packets to the reception device when the transmission flow controller determines that the storage space of the reception buffer is insufficient to store the transaction layer packets.

The dynamic frequency controller in the transmission device controls the frequency of the internal clock signal of the transmission device by monitoring a state of the transmission buffer and a state of the transmission flow controller. The dynamic frequency controller may monitor the limit credit LC and the consumed credit CC that correspond to the state of the transmission flow controller. In addition, the dynamic frequency controller may monitor a number NPP of the pending transaction layer packets stored in the transmission buffer and the number NPP of the pending transaction layer packets corresponding to the state of the transmission buffer.

The dynamic frequency controller (e.g., DFC2 or DFC1 in <FIG>) may generate a control value (e.g., PCLK_Rate2 or PCLK_Rate1 in <FIG>) based on the limit credit LC, the consumed credit CC and the number NPP of the pending transaction layer packets. The phase-locked loop (e.g., PLL2 or PLL1 in <FIG>) may generate the internal clock signal (e.g., PCLK2 or PCLK1 in <FIG>) having the frequency corresponding to the control value.

As such, the system <NUM> according to exemplary embodiments may reduce power consumption of the transmission device (e.g., <NUM> or <NUM> in <FIG>) and prevent a transfer delay from the transmission device to the reception device (e.g., <NUM> or <NUM> in <FIG>) by controlling the frequency of the internal clock signal (e.g., PCLK2 or PCLK1 in <FIG>) of the transmission device based on the monitoring result of the state of the transmission buffer (e.g., TBF2 or TBF1 in <FIG>) and the state of the transmission flow controller (e.g., TFC2 or TFC1 in <FIG>).

<FIG> is a block diagram illustrating a system including an interconnect architecture according to exemplary embodiments.

Referring to <FIG>, an exemplary embodiment of a design composed of point-to-point links that interconnect a set of components is illustrated. A system <NUM> includes processor <NUM> and a system memory <NUM> coupled to a controller hub <NUM>. The processor <NUM> includes any processing element, such as a microprocessor, a host processor, an embedded processor, a co-processor, or other processor. The processor <NUM> is coupled to the controller hub <NUM> through a front-side bus (FSB) <NUM>. In one exemplary embodiment, The FSB <NUM> is a serial point-to-point interconnect as described below. In another exemplary embodiment, the FSB <NUM> includes a serial, differential interconnect architecture that is compliant with a different interconnect standard.

The system memory <NUM> includes any memory device, such as random access memory (RAM), non-volatile (NV) memory, solid state memory, or other memory accessible by devices in the system <NUM>. The system memory <NUM> is coupled to the controller hub <NUM> through a memory interface <NUM>. Examples of a memory interface include a double-data rate (DDR) memory interface, a dual-channel DDR memory interface, and a dynamic RAM (DRAM) memory interface.

In one exemplary embodiment, the controller hub <NUM> is a root hub, root complex, or root controller in a Peripheral Component Interconnect Express (PCIe or PCIE) interconnection hierarchy. Examples of the controller hub <NUM> include a chipset, a memory controller hub (MCH), a northbridge, an interconnect controller hub (ICH) a southbridge, and a root controller/hub. Often the term chipset refers to two physically separate controller hubs, i.e. a memory controller hub (MCH) coupled to an interconnect controller hub (ICH). Note that current systems often include the MCH integrated with the processor <NUM>, while the controller hub <NUM> is used to communicate with I/O devices, in a similar manner as described below. In some exemplary embodiments, peer-to-peer routing is optionally supported through the root complex or the controller hub <NUM>.

Here, the controller hub <NUM> is coupled to a switch/bridge <NUM> through a serial link <NUM>. Input/output modules <NUM> and <NUM>, which may also be referred to as interfaces/ports <NUM> and <NUM>, include/implement a layered protocol stack to provide communication between the controller hub <NUM> and the switch <NUM>. In one e exemplary mbodiment, multiple devices are capable of being coupled to the switch <NUM>.

The switch/bridge <NUM> routes packets/messages from a device <NUM> upstream, i.e. up a hierarchy towards a root complex, to the controller hub <NUM> and downstream, i.e. down a hierarchy away from a root controller, from the processor <NUM> or the system memory <NUM> to the device <NUM>. The switch <NUM>, in one e exemplary mbodiment, is referred to as a logical assembly of multiple virtual PCI-to-PCI bridge devices. The device <NUM> includes any internal or external device or component to be coupled to an electronic system, such as an I/O device, a Network Interface Controller (NIC), an add-in card, an audio processor, a network processor, a hard-drive, a storage device, a CD/DVD ROM, a monitor, a printer, a mouse, a keyboard, a router, a portable storage device, a Firewire device, a Universal Serial Bus (USB) device, a scanner, and other input/output devices. Often in the PCIe vernacular, such a device, is referred to as an endpoint. Although not specifically shown, the device <NUM> may include a PCIe to PCI/PCI-X bridge to support legacy or other version PCI devices. Endpoint devices in PCIe are often classified as legacy, PCIe, or root complex integrated endpoints.

A graphics accelerator <NUM> is also coupled to the controller hub <NUM> through a serial link <NUM>. In one exemplary embodiment, the graphics accelerator <NUM> is coupled to an MCH, which is coupled to an ICH. The switch <NUM>, and accordingly the I/O device <NUM>, is then coupled to the ICH. The I/O modules <NUM> and <NUM> are also used to implement a layered protocol stack to communicate between the graphics accelerator <NUM> and the controller hub <NUM>. Similar to the MCH discussion above, a graphics controller or the graphics accelerator <NUM> itself, may be integrated in the processor <NUM>. It should be appreciated that one or more of the components (e.g., <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>) illustrated in <FIG> may be enhanced to execute, store, and/or embody logic to implement one or more of the features described herein.

<FIG> and <FIG> are diagrams illustrating an exemplary embodiment of an interconnect architecture applied to a system according to exemplary embodiments.

Referring to <FIG> and <FIG>, an exemplary embodiment of a layered protocol stack is illustrated. A layered protocol stack includes any form of a layered communication stack, such as a Quick Path Interconnect (QPI) stack, a PCIe stack, a next generation high performance computing interconnect stack, or other layered stack. Although exemplary embodiments are in relation to a PCIe stack, the same concepts may be applied to other interconnect stacks. In one exemplary embodiment, the protocol stack is a PCIe protocol stack including a transaction layer, a data link layer, and a physical layer. An interface, such as the interfaces <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, and <NUM> in <FIG>, may be represented as a communication protocol stack. Representation as a communication protocol stack may also be referred to as a module or interface implementing/including a protocol stack.

The PCI Express uses packets to communicate information between components. The packets are formed in the transaction layer and the data Link Layer to carry the information from the transmitting component to the receiving component. As the transmitted packets flow through the other layers, they are extended with additional information necessary to handle packets at those layers. At the receiving side the reverse process occurs and packets get transformed from their physical layer representation to the data link layer representation and finally (for transaction layer packets) to the form that may be processed by the transaction layer of the receiving device.

In one exemplary embodiment, the transaction layer is used to provide an interface between a device's processing core and the interconnect architecture, such as the data link layer and the physical layer. In this regard, a primary responsibility of the transaction layer is the assembly and disassembly of packets (i.e., the transaction layer packets, or TLPs). The transaction layer typically manages credit-based flow control for TLPs. The PCIe implements split transactions, i.e. transactions with a request and response separated by time, allowing a link to carry other traffic while the target device gathers data for the response.

In addition the PCIe utilizes credit-based flow control. In this scheme, a device advertises an initial amount of credit for each of the receive buffers in the transaction layer. An external device at the opposite end of the link, such as the controller hub <NUM> in <FIG>, counts the number of credits consumed by each TLP. A transaction may be transmitted if the transaction does not exceed a credit limit. Upon receiving a response, an amount of credit is restored. An advantage of a credit scheme is that the latency of credit return does not affect performance, provided that the credit limit is not encountered.

In one exemplary embodiment, the transaction layer assembles packet header/payload. The payload may include data and an error detection code, i.e. ECRC. Formats for current packet headers/payloads may be found in the PCIe specification at the PCIe specification website.

The link layer, also referred to as the data link layer, acts as an intermediate stage between the transaction layer and the physical layer or the PHY layer. In one exemplary embodiment, a responsibility of the data link layer is providing a reliable mechanism for exchanging the transaction layer packets (TLPs) between two components through a link. One side of the data link layer accepts TLPs assembled by the transaction layer, applies a packet sequence identifier, i.e. a sequence number, an identification number or a packet number, calculates and applies an error detection code, i.e. LCRC, and submits the modified TLPs to the physical layer for transmission across a physical layer to an external device.

In one exemplary embodiment, the physical layer includes a logical sub block and an electrical sub-block to physically transmit a packet to an external device. Here, the logical sub-block is responsible for the "digital" functions of the physical layer. In this regard, the logical sub-block includes a transmitter section to prepare outgoing information for transmission by the physical sub-block, and a receiver section to identify and prepare received information before passing it to the link layer.

The physical block includes a transmitter TX and a receiver RX. The transmitter TX is supplied by the logical sub-block with symbols, which the transmitter serializes and transmits onto to an external device. The receiver RX is supplied with serialized symbols from an external device and transforms the received signals into a bit-stream. The bit-stream is de-serialized and supplied to the logical sub-block. In one exemplary embodiment, an 8b/10b transmission code is employed, where ten-bit symbols are transmitted/received. Here, special symbols are used to frame a packet with frames. In addition, in one example, the receiver RX also provides a symbol clock recovered from the incoming serial stream.

As stated above, although the transaction layer, the link layer, and physical layer are discussed in reference to a specific embodiment of a PCIe protocol stack, a layered protocol stack is not so limited. In fact, any layered protocol may be included/implemented.

<FIG>, <FIG> and <FIG> are diagrams packets that are transferred between a transmission device and reception device included in a system according to exemplary embodiments.

<FIG> illustrates a format of a transaction layer packet (TLP) that is generated and managed by the transaction layer of the PCIe architecture.

The Transactions consists of requests and completions, which are communicated using packets. As illustrated in <FIG>, a TLP may include one or more optional TLP Prefixes, a TLP header, a data payload, and an optional TLP Digest, which are assigned to a plurality of bytes (BYTE <NUM>~k+<NUM>).

<FIG> and <FIG> illustrate formats of flow control layer packets that are generated and managed by the data link layer of the PCIe architecture. <FIG> illustrates an initial flow control packet InitFC and <FIG> illustrates an update flow control packet UpdateFC.

The flow control information on the occupation state of the reception buffer may be transferred using the initial flow control packet InitFC and the update flow control packet UpdateFC, which correspond to a type of a data link layer packet DLLP. As illustrated in <FIG> and <FIG>, the initial flow control packet InitFC and the update flow control packet UpdateFC may include fields such as a credit type (P, NP or CPL), a virtual channel identifier (VCID), a header scale (HdrScale), a header credit (HdrFC), a data scale (DataScale), a data credit (DataFC), and a cyclical redundancy code (CRC). The credit type may include a post request type (P), a non-posted request type (NP) and a completion type (CPL).

The PCIe components such as a host device and a storage device may exchange information on the respective reception buffers using the initial flow control packet InitFC during system initialization. In an aspect of the storage device, the storage device receives, from the host device, information on the allocated size of the port to which the storage device is attached. After that, the storage device updates a consumed credit CC whenever the host device transmits a transaction layer packet (TLP). The host device updates an allocated credit AC whenever the host device transfers the TLP from the reception buffer to the higher layer. The host device may provide the allocated credit AC using the update flow control packet UpdateFC, and the storage device may update a limit credit LC based on the allocated credit AC. The storage device may determine whether a storage space of the reception buffer of host device is insufficient to store the transaction layer packets, based on a difference between the limit credit LC and the consumed credit CC. The storage device may block transmission of the TLPs to the host device when the transmission flow controller of the storage device determines that the storage space of the reception buffer of the host device is insufficient to store the transaction layer packets. After that, the storage device may transfer the TLPs to the host device if the limit credit LC is increased by the update flow control packet UpdateFC transferred from the host device.

<FIG> is a diagram illustrating an exemplary embodiment of a PHY-MAC interface applied to a system according to exemplary embodiments.

<FIG> illustrates a PHY-MA interface according to a PIPE (PHY Interface for PCI Express) standards. As illustrated in <FIG>, each of a transmission device and a reception device may include an interface between a MAC (media access) layer and a PHY layer. The MAC layer is connected to the higher layer including the data link layer, while the PHY layer may be coupled to a physical interconnect, e.g., by differential signal pairs in the transmit and receive directions.

Various signaling occurs between the MAC layer and the PHY layer. In general, data TXDATA and data/control signals TXDATAK to be transmitted from a device is sent from the MAC layer to the PHY layer along with a variable amount of command signals COMMAND. The PHY layer transfers a differential signal pair TX+ and TX- corresponding to the data TXDATA to the channel. In turn, for incoming data received by the device, the PHY layer communicates parallel data as RX data RXDATA with corresponding data/control information RXDATAK. In addition, status information STATUS of a variable length may be communicated.

The internal clock signal or the PIPE clock signal PCLK may be used for synchronization of signal transfer between the MAC layer and the PHY layer. <FIG> illustrates that the PIPE clock signal is provided from outside the MAC layer and the PHY layer, but exemplary embodiments are not limited thereto.

<FIG>, <FIG> and <FIG> are diagrams illustrating exemplary embodiments of synchronization using an internal clock signal in a system according to exemplary embodiments.

<FIG> illustrates a configuration corresponding to a PHY output mode. Referring to <FIG>, a phase-locked loop PLL included in a PHY layer may generate a PIPE clock signal PCLK and a bit rate clock signal BRCLK based on a reference clock signal CLK. The PIPE signal PCLK may be used to synchronize signal transfer between the PHY layer and an internal logic circuit of a MAC layer, and the bit rate clock signal BRCLK may be used to control transfer speed between the transmission device and the reception device. As such, the PIPE clock signal PCLK may be generated in the PHY layer and transferred to the internal logic circuit of the MAC layer.

<FIG> illustrates a configuration corresponding to a PHY input mode. Referring to <FIG>, a phase-locked loop PLLa included in a PHY layer may generate a bit rate clock signal BRCLK based on a reference clock signal CLK, and a phase-locked loop PLLb disposed out of the PHY layer may generate and a PIPE clock signal PCLK based on the reference clock signal CLK. As such, the PIPE clock signal PCLK may be generated outside the PHY layer and transferred to the PHY layer and the internal logic circuit of the MAC layer.

Each of the phase-locked loops PLL and PLLb may control the frequency of the PIPE clock signal PCLK based on a control value PCLK_Rate and control the frequency of the bit rate clock signal BRCLK based on a control value RT. The control value RT for the bit rate clock signal BRCLK may be controlled at the system level to synchronize the PHY layers of the transmission device and the reception device. In contrast, the control value PCLK_Rate for the PIPE clock signal PCLK may be controlled by the dynamic frequency controller included in a system according to exemplary embodiments. The dynamic frequency controller included in the transmission device may increase the frequency of the internal clock signal, that is, the PIPE clock signal PCLK to increase a speed of a flow control update operation by the transmission device when a transfer delay from the transmission device to the reception device occurs, regardless of the frequency of the bit rate clock signal BRCLK.

Referring to <FIG>, the transaction layer, the data link layer, the MAC layer and the PHY layer may be implemented as hardware blocks that are connected through parallel interfaces. The PIPE clock signal PCLK may be provided to the hardware blocks for synchronization of signal transfer between the hardware blocks.

For example, the dynamic frequency controller according to exemplary embodiments may determine that a flow delay state occurs if the number of the pending transaction layer packets stored in the transmission buffer is equal to or greater than one (that is, the transmission buffer is not empty) and the transmission flow controller blocks the transmission of the transaction layer packets to the host device. Even though the update flow control packet UpdateFC including the increased allocated credit AC is received from the reception device during the flow delay state, the transfer of the pending transaction layer packet may be delayed due to the time delay for updating the limit credit LC. The flow control according to PCIe is performed by the transaction layer and the transfer delay may be increased in case of a multi-stage structure as illustrated in <FIG>. According to exemplary embodiments, the transfer delay may be reduced by increasing the frequency of the PIPE clock signal PCLK when the flow delay state occurs.

<FIG> is a diagram illustrating a frequency of an internal clock signal specified by PIPE (PHY Interface for PCI Express) standards, and <FIG> is a diagram illustrating an exemplary embodiment of setting a plurality of step frequencies of an internal clock signal in a system according to exemplary embodiments.

<FIG> illustrates the frequency of the PIPE clock signal with respect to phases Phases1~Phases4 of the first generation Gen1 through the sixth generation Gen6 of PCIe. The PCIe transfer speed is represented by giga transfer per second (GT/s) and the frequency of the PIPE clock signal is represented by mega Hertz (MHz).

<FIG> illustrates an exemplary embodiment of setting the frequency of the PIPE clock signal PCLK corresponding to the above-mentioned internal clock signal to a plurality of step frequencies, that is, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, and <NUM>. The step frequencies may be set variously according to operation environment of the system, PCIe specifications, and so on.

The control value PCLK_Rate for controlling the frequency of the PIPE clock signal PCLK may be represented by multiple bits, for example, five bits [<NUM>:<NUM>]. The phase-locked loop may be configured to generate the PIPE clock signal PCLK having the frequency corresponding to the control value PCLK_Rate. In the exemplary embodiment of <FIG>, the control value PCLK_Rate of <NUM> corresponds to the minimum frequency of <NUM> and the control value PCLK_Rate of <NUM> corresponds to the maximum frequency of <NUM>. Hereinafter, exemplary embodiments are described based on the setting of step frequencies in <FIG>.

<FIG> is a flow chart illustrating an exemplary embodiment of increasing a frequency of an internal clock signal in a system according to exemplary embodiments.

Referring to <FIG>, the link may be reset (S11) when the system is powered on, an error occurs, and so on.

After the reset of the link is completed, the frequency of the internal clock signal PCLK may be initialized to the minimum frequency among the plurality of step frequencies (S12). In other words, the control value PCLK_Rate may be initialized to <NUM> corresponding to the minimum frequency.

The dynamic frequency controller DFC may monitor the state of the transmission buffer TBF and the state of the transmission flow controller TFC (S13). In some exemplary embodiments, the dynamic frequency controller DFC may monitor the number NPP of the pending transaction layer packets, which corresponds to the state of the transmission buffer, and monitor the limit credit LC and the consumed credit CC, which correspond to the state of the transmission flow controller TFC.

When the number NPP of the pending transaction layer packets is zero (S14: YES), that is, when the pending transaction layer packet does not exist in the transmission buffer TBF, the dynamic frequency controller DFC may wait for a first cycle period tPD1 (S15) and monitor the state of the transmission buffer TBF and the state of the transmission flow controller TFC (S13).

When the number NPP of the pending transaction layer packets is not zero (S14: NO) and when the difference LC-CC between the limit credit LC and the consumed credit CC is not smaller than a reference credit CR (S16: NO), the dynamic frequency controller DFC may wait for the first cycle period tPD1 (S15) and monitor the state of the transmission buffer TBF and the state of the transmission flow controller TFC (S13).

When the number NPP of the pending transaction layer packets is not zero (S14: NO) and when the difference LC-CC between the limit credit LC and the consumed credit CC is smaller than the reference credit CR (S16: YES), the dynamic frequency controller DFC may determine that a flow delay state occurs. When the flow delay state occurs and the present control value PCLK_Rate is not <NUM> corresponding to the maximum frequency among the plurality of step frequencies (S17: NO), the dynamic frequency controller DFC may increase the control value PCLK_Rate by one (S18). As such, the dynamic frequency controller DFC may increase the frequency of the internal clock signal PCLK by one step. After that, the dynamic frequency controller DFC may wait for the first cycle period tPD1 (S15) and monitor the state of the transmission buffer TBF and the state of the transmission flow controller TFC (S13).

As such, the dynamic frequency controller DFC may determine periodically by the first cyclic period tPD1 whether the flow delay state occurs and increase the frequency of the internal clock signal PCLK step by step until the frequency reaches the maximum frequency (S17: YES). After the frequency reaches the maximum frequency, the frequency of the internal clock signal PCLK may be maintained at the maximum frequency until the link is reset again.

<FIG> is a flowchart illustrating an exemplary embodiment for decreasing a frequency of an internal clock signal in a system according to exemplary embodiments.

Referring to <FIG>, the dynamic frequency controller DFC may monitor the state of the transmission buffer TBF and the state of the transmission flow controller TFC (S31). In some exemplary embodiments, the dynamic frequency controller DFC may monitor the number NPP of the pending transaction layer packets, which corresponds to the state of the transmission buffer, and monitor the limit credit LC and the consumed credit CC, which correspond to the state of the transmission flow controller TFC.

When the number NPP of the pending transaction layer packets is not smaller than a reference number NR (S32: NO), the dynamic frequency controller DFC may wait for a second cycle period tPD2 (S33) and monitor the state of the transmission buffer TBF and the state of the transmission flow controller TFC (S31).

When the number NPP of the pending transaction layer packets is smaller than the reference number NR (S14: YES) and when the difference LC-CC between the limit credit LC and the consumed credit CC is smaller than a reference credit CR (S34: YES), the dynamic frequency controller DFC may wait for the second cycle period tPD2 (S33) and monitor the state of the transmission buffer TBF and the state of the transmission flow controller TFC (S31).

When the number NPP of the pending transaction layer packets is smaller than the reference number NR (S14: YES) and when the difference LC-CC between the limit credit LC and the consumed credit CC is not smaller than the reference credit CR (S34: NO), the dynamic frequency controller DFC may determine that a smooth flow state occurs. When a smooth flow state occurs and the present control value PCLK_Rate is not <NUM> corresponding to the minimum frequency among the plurality of step frequencies (S35: NO), the dynamic frequency controller DFC may decrease the control value PCLK_Rate by one (S36). As such, the dynamic frequency controller DFC may decrease the frequency of the internal clock signal PCLK by one step. After that, the dynamic frequency controller DFC may wait for the second cycle period tPD2 (S33) and monitor the state of the transmission buffer TBF and the state of the transmission flow controller TFC (S31).

As such, the dynamic frequency controller DFC may determine periodically by the second cyclic period tPD2 whether the smooth flow state occurs and decrease the frequency of the internal clock signal PCLK step by step until the frequency reaches the minimum frequency (S35: YES). When the frequency of the internal clock signal PCLK corresponds to the minimum frequency (S35: YES), the dynamic frequency controller DFC may wait for the second cycle period tPD2 (S33) and monitor the state of the transmission buffer TBF and the state of the transmission flow controller TFC (S31).

<FIG> and <FIG> are diagrams illustrating an exemplary embodiment of controlling a frequency of an internal clock signal in a system according to exemplary embodiments.

Referring to <FIG> and <FIG>, the dynamic frequency controller DFC may monitor the state of the transmission buffer TBF and the state of the transmission flow controller TFC (S51). In some exemplary embodiments, the dynamic frequency controller DFC may monitor the number NPP of the pending transaction layer packets, which corresponds to the state of the transmission buffer, and monitor the limit credit LC and the consumed credit CC, which correspond to the state of the transmission flow controller TFC.

When the difference LC-CC between the limit credit LC and the consumed credit CC is not smaller than a first reference credit CR1 (S52: NO), the dynamic frequency controller DFC may wait for a first cycle period tPD1 (S53) and monitor the state of the transmission buffer TBF and the state of the transmission flow controller TFC (S51).

When the difference LC-CC between the limit credit LC and the consumed credit CC is smaller than the first reference credit CR1 (S52: YES), the dynamic frequency controller DFC may determine that a flow delay state occurs. When the flow delay state occurs and the present control value PCLK_Rate is not <NUM> corresponding to the maximum frequency among the plurality of step frequencies (S54: NO), the dynamic frequency controller DFC may increase the control value PCLK_Rate by one (S55). As such, the dynamic frequency controller DFC may increase the frequency of the internal clock signal PCLK by one step. After that, the dynamic frequency controller DFC may wait for the first cycle period tPD1 (S53) and monitor the state of the transmission buffer TBF and the state of the transmission flow controller TFC (S51).

When the difference LC-CC between the limit credit LC and the consumed credit CC is not greater than a second reference credit CR2 (S56: NO), the dynamic frequency controller DFC may wait for a second cycle period tPD2 (S57) and monitor the state of the transmission buffer TBF and the state of the transmission flow controller TFC (S51). As illustrated in <FIG>, the second reference credit CR2 may be set to be greater than the first reference credit CR1.

When the difference LC-CC between the limit credit LC and the consumed credit CC is greater than the second reference credit CR2 (S56: YES), the dynamic frequency controller DFC may determine that the smooth flow state occurs. When the smooth flow state occurs and the present control value PCLK_Rate is not <NUM> corresponding to the minimum frequency among the plurality of step frequencies (S58: NO), the dynamic frequency controller DFC may decrease the control value PCLK_Rate by one (S59). As such, the dynamic frequency controller DFC may decrease the frequency of the internal clock signal PCLK by one step. After that, the dynamic frequency controller DFC may wait for the second cycle period tPD2 (S57) and monitor the state of the transmission buffer TBF and the state of the transmission flow controller TFC (S51).

As such, the dynamic frequency controller DFC may increase the frequency of the internal clock signal PCLK when the difference LC-CC between the limit credit LC and the consumed credit CC is smaller than the first reference credit CR1, and decrease the frequency of the internal clock signal PCLK when the difference LC-CC between the limit credit LC and the consumed credit CC is greater than the second reference credit CR2. When the difference LC-CC is between the first reference credit CR1 and the second reference credit CR2, the present frequency of the internal clock signal PCLK may be maintained.

<FIG> is a diagram illustrating an exemplary timing for controlling an internal clock signal in a system according to exemplary embodiments.

In <FIG>, the timings for determining whether to increase the frequency of the internal clock signal PCLK are represented by empty rectangles and the timings of determining whether to decrease the frequency of the internal clock signal PCLK are represented by hatched rectangles. As illustrated in <FIG>, the dynamic frequency controller DFC may determine periodically by the first cyclic period tPD1 whether to increase the frequency of the internal clock signal PCLK, and determine periodically by the second cyclic period tPD2 longer than the first cyclic period tPD1 whether to decrease the frequency of the internal clock signal PCLK.

As the first cyclic period tPD1 is shortened, the performance of the transmission device may be enhanced but the power consumption may be increased. As the second cyclic period tPD2 is shortened, the power consumption may be decreased but the performance may be degraded. The performance enhancement may be considered first over the power reduction, by setting the first cyclic period tPD1 to be shorter than the second cyclic period tPD2.

<FIG> and <FIG> are block diagrams illustrating links including a retimer in a system according to exemplary embodiments.

As illustrated in <FIG>, in a system 500a, multiple retimers 515a and 515b may be utilized to extend a link 530a. Three sublinks 520a, 520b and 520c may be defined through the two retimers 515a and 515b, with a first sublink 515a connecting a first component <NUM> (e.g., an upstream component) to the first retimer 515a, a second sublink connecting the first retimer 515a to the second retimer 515b, and the third sublink 515c connecting the second retimer 515b to a second component <NUM> (e.g., a downstream component).

As illustrated in <FIG>, in a system 500b, a link 530b connecting the first component <NUM> to the second component <NUM> may include a single retimer 515a. A first sublink 520a may connect the first component <NUM> to the retimer 515a and a second sublink 520b may connect the retimer 515a to the second component.

As shown in the examples of <FIG> and <FIG>, a retimer may include two pseudo ports (downstream pseudo port and upstream pseudo port), and the pseudo ports may determine their respective downstream/upstream orientation dynamically. Each of the retimers 515a and 515b may have an upstream path and a downstream path. Further, the retimers 515a and 515b may support operating modes including a forwarding mode and an executing mode. The retimer 515a and 515b in some instances may decode data received on the sublink and re-encode the data that it is to forward downstream on its other sublink. In some cases, the retimers 515a and 515b may modify some values in the data it receives, such as when processing and forwarding ordered set data. Additionally, the retimers 515a and 515b may potentially support any width option as its maximum width, such as a set of width options defined by a specification such as PCIe.

<FIG>, <FIG> and <FIG> are diagrams for describing transfer delay in a system according to exemplary embodiments.

Referring to <FIG>, <FIG> and <FIG>, a host device may correspond to a reception device and a storage device may correspond to a transmission device. For example, the host device may include a reception buffer RBF of 3824B (bytes) and the storage device may transfer transaction layer packets each including a data payload of 512B. In other words, the maximum number of the transaction layer packets that may be stored in the reception buffer RBF may be seven.

If the seven transaction layer packets are stored in the reception buffer RBF, the storage device cannot transfer the eighth transaction layer packet to the host device. The storage device may transfer the eighth transaction layer packet after the update information is received through the update flow control packet UpdateFC from the host device. As such, the storage device has to wait for the flow control update information to send the eighth transaction layer packet and thus the performance of the storage device may be degraded.

<FIG> illustrates a case that the frequency of the internal clock signal PCLK is <NUM> and there is no a retimer between the host device and the storage device. <FIG> illustrates a case that the frequency of the internal clock signal PCLK is <NUM> and there exists a retimer between the host device and the storage device. <FIG> illustrates a case in which the frequency of the internal clock signal PCLK is <NUM> and there exists a retimer between the host device and the storage device.

Recent increases of the speed of PCIe cause degradation of signal integrity, and an integrated circuit such as a retimer is required to compensate for the degradation of signal integrity between the host device and the storage device.

In an environment in which the retimer is not disposed between the host device and the storage device as illustrated in <FIG>, the storage device may process the update flow control packet UpdateFC and transfer the eighth transaction layer packet without delay even though the frequency of the internal clock signal PCLK is relatively as low as <NUM>. In contrast, in an environment in which the retimer is included as illustrated in <FIG>, the transfer delay occurs due to the retimer and the performance of the storage device may be degraded significantly. In this case, the transfer delay may be reduced or prevented by increasing the frequency of the internal clock signal PCLK up to <NUM> as illustrated in <FIG>. If the frequency of the internal clock signal PCLK is fixed at the maximum frequency, the transfer delay may be reduced or prevented but power consumption is largely increased.

As described above, the power consumption of the transmission device (e.g., the storage device) and the transfer delay from the transmission device to the reception device (e.g., the host device) may be prevented or reduced by controlling the frequency of the internal clock signal of the transmission device based on the monitoring result of the state of the transmission buffer and the state of the transmission flow controller.

<FIG> is a block diagram illustrating a storage system according to exemplary embodiments.

Referring to <FIG>, a storage system <NUM> may include a host device <NUM>, a storage device <NUM> and a link <NUM> connecting the host device <NUM> and the storage device <NUM>. The storage device <NUM> may include a storage controller <NUM> and a nonvolatile memory device <NUM>. The storage controller <NUM> may include a transmission buffer TRANSMISSION BUFFER, a transmission flow controller TFC and a dynamic frequency controller DFC. For example, the storage device <NUM> may be a solid state drive (SSD), an embedded multimedia card (eMMC), a universal flash storage (UFS), or the like. The link <NUM> may be a PCIe link.

The host device <NUM> may be or include a data processing device such as a central processing unit (CPU), a microprocessor, an application processor (AP), or the like. The storage device <NUM> may be embedded with the host device <NUM> in an electronic device, or the storage device <NUM> may be detachable to an electronic device including the host device <NUM>.

The host device <NUM> may transfer a data operation request (which may be referred to herein as simply a request) REQ and an associated address ADDR to the storage controller <NUM> to communicate data DTA with the storage controller <NUM>. The storage controller <NUM> may transfer a response RSND to the request REQ to the host device <NUM>. The data operation request REQ may include a read request, a program request, and/or an erase request, respectively associated with one or more read operations, program operations, and/or erase operations. The program request may be referred to as a write request.

The storage controller <NUM> may control the nonvolatile memory device <NUM> based on the request REQ. The storage controller <NUM> may provide addresses ADDR, commands CMD, and control signals CTRL to perform the read operations, the program operations, and/or the erase operations. The program operation may be referred to as a write operation.

The storage controller <NUM> may control the nonvolatile memory device <NUM> to read data DTA stored in the nonvolatile memory device <NUM> in response to the read request received from the host device <NUM>. The storage controller <NUM> may control the nonvolatile memory device <NUM> to write or program data DTA in the nonvolatile memory device <NUM> in response to the write or program request received from the host device <NUM>. The storage controller <NUM> may control the nonvolatile memory device <NUM> to erase data stored in the nonvolatile memory device <NUM> in response to the erase request received from the host device <NUM>. The nonvolatile memory device <NUM> may transfer a response RSND to the storage controller <NUM> in response to the command CMD.

The nonvolatile memory device <NUM> may be implemented with nonvolatile memory such as flash memory, MRAM (Magnetic RAM), FeRAM (Ferroelectric RAM), PRAM (Phase change RAM), ReRAM(Resistive RAM), or the like. The nonvolatile memory device <NUM> may be connected to the storage controller <NUM> through a plurality of channels. Hereinafter, some exemplary embodiments will be described based on NAND flash memory, but the present disclosure is not limited to any particular kind of nonvolatile memory.

<FIG> is a block diagram illustrating a storage controller according to exemplary embodiments, and <FIG> is a diagram illustrating a host interface and a dynamic frequency controller included in the storage controller of <FIG>.

Referring to <FIG>, a storage controller <NUM> may include a processor <NUM>, a buffer memory BUFF <NUM>, a dynamic frequency controller DFC <NUM>, a host interface HIF <NUM>, an error correction code (ECC) engine <NUM>, a memory interface MIF <NUM>, an advanced encryption standard (AES) engine <NUM>, and an internal bus system <NUM> that connects the components in the storage controller <NUM>.

The processor <NUM> may control an operation of the storage controller <NUM> in response to commands received via the host interface <NUM> from a host device (e.g., the host device <NUM> in <FIG>). For example, the processor <NUM> may control an operation of a storage device (e.g., the storage device <NUM> of <FIG>), and may control respective components by employing firmware for operating the storage device.

The buffer memory <NUM> may store instructions and data executed and processed by the processor <NUM>. For example, the buffer memory <NUM> may be implemented with a volatile memory, such as a DRAM, a SRAM, a cache memory, or the like.

The ECC engine <NUM> for error correction may perform coded modulation using a Bose-Chaudhuri-Hocquenghem (BCH) code, a low density parity check (LDPC) code, a turbo code, a Reed-Solomon code, a convolution code, a recursive systematic code (RSC), a trellis-coded modulation (TCM), a block coded modulation (BCM), or the like. In some exemplary embodiments, the ECC engine <NUM> may perform ECC encoding and ECC decoding using above-described codes or other error correction codes.

The host interface <NUM> may provide physical connections between the host device <NUM> and the storage device <NUM>. The host interface <NUM> may provide an interface that corresponds to a bus format of the host device <NUM> for communication between the host device <NUM> and the storage device <NUM>. In some exemplary embodiments, the bus format of the host device <NUM> may be a small computer system interface (SCSI) or a serial attached SCSI (SAS) interface. In other exemplary embodiments, the bus format of the host device may be a USB, a peripheral component interconnect (PCI) express (PCIe), an advanced technology attachment (ATA), a parallel ATA (PATA), a SATA, a nonvolatile memory (NVM) express (NVMe), or other format.

The memory interface <NUM> may exchange data with a nonvolatile memory device (e.g., the nonvolatile memory device <NUM> in <FIG>). The memory interface <NUM> may transfer data to the nonvolatile memory device <NUM>, and/or may receive data read from the nonvolatile memory device <NUM>. In some exemplary embodiments, the memory interface <NUM> may be connected to the nonvolatile memory device <NUM> via one channel. In other exemplary embodiments, the memory interface <NUM> may be connected to the nonvolatile memory device <NUM> via two or more channels. The memory interface <NUM> may be configured to comply with a standard protocol, such as Toggle or open NAND flash interface (ONFI).

The AES engine <NUM> may perform at least one of an encryption operation and a decryption operation on data input to the storage controller <NUM> using a symmetric-key algorithm. The AES engine <NUM> may include an encryption module and a decryption module. For example, the encryption module and the decryption module may be implemented as separate modules. In another example, one module capable of performing both encryption and decryption operations may be implemented in the AES engine <NUM>.

Referring to <FIG>, <FIG> and <FIG>, the host interface <NUM> may include the transmission buffer TBF, a transmission flow controller TFC and the phase-locked loop PLL.

The transmission buffer TBF may store pending transaction layer packets to be transferred to the host device. The transmission flow controller TFC may control a flow of transaction layer packets to be transferred to the host device based on the flow control packets InitFC and UpdateFC received from the host device.

The dynamic frequency controller DFC <NUM> may control the frequency of the internal clock signal PCLK of the storage controller <NUM> by monitoring the state of the transmission buffer TBF and the state of the transmission flow controller TFC.

In some exemplary embodiments, the dynamic frequency controller <NUM> may monitor the number NPP of the pending transaction layer packets, which corresponds to the state of the transmission buffer TBF, and monitor the limit credit LC and the consumed credit CC, which correspond to the state of the transmission flow controller TFC. As described with reference to <FIG>, the dynamic frequency controller <NUM> may increase or decrease the control value PCLK_Rate step by step. The phase-locked loop PLL may generate the internal clock signal PCLK having the frequency corresponding to the control value PCLK_Rate.

<FIG> is a block diagram illustrating an exemplary embodiment of a nonvolatile memory device included in a storage device according to exemplary embodiments.

Referring to <FIG>, a nonvolatile memory device <NUM> may include a memory cell array <NUM>, a page buffer circuit <NUM>, a data input/output (I//O) circuit <NUM>, an address decoder <NUM>, a control circuit <NUM>, and a voltage generator <NUM>. In some exemplary embodiments, the nonvolatile memory device <NUM> may have a cell over periphery (COP) structure in which a memory cell array is arranged over peripheral circuits. In this case, the memory cell array <NUM> may be formed in a cell region CREG, and the page buffer circuit <NUM>, the data I/O circuit <NUM>, the address decoder <NUM>, the control circuit <NUM>, and the voltage generator <NUM> may be formed in a peripheral region PREG.

The memory cell array <NUM> may be coupled to the address decoder <NUM> through string selection lines SSL, wordlines WL, and ground selection lines GSL. The memory cell array <NUM> may be coupled to the page buffer circuit <NUM> through a bitlines BL. The memory cell array <NUM> may include memory cells coupled to the wordlines WL and the bitlines BL. In some exemplary embodiments, the memory cell array <NUM> may be a three-dimensional memory cell array, which may be formed on a substrate in a three-dimensional structure (or a vertical structure). In this case, the memory cell array <NUM> may include cell strings (e.g., NAND strings) that are vertically oriented such that at least one memory cell is located over another memory cell.

The control circuit <NUM> may receive a command signal CMD and an address signal ADDR from a memory controller, and may control erase, program, and read operations of the nonvolatile memory device <NUM> in response to (or based on) at least one of the command signal CMD and the address signal ADDR. The erase operation may include performing a sequence of erase loops, and the program operation may include performing a sequence of program loops. Each program loop may include a program operation and a program verification operation. Each erase loop may include an erase operation and an erase verification operation. The read operation may include a normal read operation and data recover read operation.

In some exemplary embodiments, the control circuit <NUM> may generate control signals CTL used to control the operation of the voltage generator <NUM>, and may generate a page buffer control signal PBC for controlling the page buffer circuit <NUM>, based on the command signal CMD, and may generate a row address R_ADDR and a column address C_ADDR based on the address signal ADDR. The control circuit <NUM> may provide the row address R_ADDR to the address decoder <NUM>, and may provide the column address C_ADDR to the data I/O circuit <NUM>.

The address decoder <NUM> may be coupled to the memory cell array <NUM> through the string selection lines SSL, the wordlines WL, and the ground selection lines GSL. During the program operation or the read operation, the address decoder <NUM> may determine (or select) one of the wordlines WL as a selected wordline, and may determine or designate the remaining wordlines WL other than the selected wordline as unselected wordlines based on the row address R_ADDR.

In addition, during the program operation or the read operation, the address decoder <NUM> may determine one of the string selection lines SSL as a selected string selection line and determine or designate the remaining the string selection lines SSL other than the selected string selection line as unselected string selection lines based on the row address R_ADDR.

The voltage generator <NUM> may generate wordline voltages VWL, which are used for the operation of the memory cell array <NUM> of the nonvolatile memory device <NUM>, based on the control signals CTL. The voltage generator <NUM> may receive the power PWR from the memory controller. The wordline voltages VWL may be applied to the wordlines WL through the address decoder <NUM>.

In some exemplary embodiments, during the erase operation, the voltage generator <NUM> may apply an erase voltage to a well and/or a common source line of a memory block, and may apply an erase permission voltage (e.g., a ground voltage) to all of the wordlines of the memory block or a portion of the wordlines based on an erase address. During the erase verification operation, the voltage generator <NUM> may apply an erase verification voltage simultaneously to all of the wordlines of the memory block or sequentially (e.g., one by one) to the wordlines.

In some exemplary embodiments, during the program operation, the voltage generator <NUM> may apply a program voltage to the selected wordline, and may apply a program pass voltage to the unselected wordlines. During the program verification operation, the voltage generator <NUM> may apply a program verification voltage to the first wordline, and may apply a verification pass voltage to the unselected wordlines.

During the normal read operation, the voltage generator <NUM> may apply a read voltage to the selected wordline, and may apply a read pass voltage to the unselected wordlines. During the data recover read operation, the voltage generator <NUM> may apply the read voltage to a wordline adjacent to the selected wordline, and may apply a recover read voltage to the selected wordline.

The page buffer circuit <NUM> may be coupled to the memory cell array <NUM> through the bitlines BL. The page buffer circuit <NUM> may include multiple buffers. In some exemplary embodiments, each buffer may be connected to only a single bitline. In other exemplary embodiments, each buffer may be connected to two or more bitlines. The page buffer circuit <NUM> may temporarily store data to be programmed in a selected page or data read out from the selected page of the memory cell array <NUM>.

The data I/O circuit <NUM> may be coupled to the page buffer circuit <NUM> through data lines DL. During the program operation, the data I/O circuit <NUM> may receive program data DATA received from the memory controller and provide the program data DATA to the page buffer circuit <NUM> based on the column address C_ADDR received from the control circuit <NUM>. During the read operation, the data I/O circuit <NUM> may provide read data DATA, having been read from the memory cell array <NUM> and stored in the page buffer circuit <NUM>, to the memory controller based on the column address C_ADDR received from the control circuit <NUM>.

The page buffer circuit <NUM> and the data I/O circuit <NUM> may read data from a first area of the memory cell array <NUM>, and may write this read data to a second area of the memory cell array <NUM> (e.g., without transmitting the data to a source external to the nonvolatile memory device <NUM>, such as to the memory controller). Thus, the page buffer circuit <NUM> and the data I/O circuit <NUM> may perform a copy-back operation.

<FIG> is a block diagram illustrating a memory cell array included in the nonvolatile memory device of <FIG>, and <FIG> is a circuit diagram illustrating an equivalent circuit of a memory block included in the memory cell array of <FIG>.

Referring to <FIG>, the memory cell array <NUM> may include memory blocks BLK1 to BLKz. In some exemplary embodiments, the memory blocks BLK1 to BLKz may be selected by the address decoder <NUM> of <FIG>. For example, the address decoder <NUM> may select a particular memory block BLK corresponding to a block address among the memory blocks BLK1 to BLKz.

A memory block BLKi of <FIG> may be formed on a substrate in a three-dimensional structure (or a vertical structure). For example, NAND strings or cell strings included in the memory block BLKi may be formed in a vertical direction D3 perpendicular to an upper surface of a substrate.

Referring to <FIG>, the memory block BLKi may include NAND strings NS11 to NS33 coupled between bitlines BL1, BL2, and BL3 and a common source line CSL. Each of the NAND strings NS11 to NS33 may include a string selection transistor SST, a memory cells MC1 to MC8, and a ground selection transistor GST. In <FIG>, each of the NAND strings NS11 to NS33 are illustrated to include eight memory cells MC1 to MC8. Each of the NAND strings NS11 to NS33 may include various numbers of memory cells.

Each string selection transistor SST may be connected to a corresponding string selection line (one of SSL1 to SSL3). The memory cells MC1 to MC8 may be connected to corresponding gate lines GTL1 to GTL8, respectively. The gate lines GTL1 to GTL8 may be wordlines, and some of the gate lines GTL1 to GTL8 may be dummy wordlines. Each ground selection transistor GST may be connected to a corresponding ground selection line (one of GSL1 to GSL3). Each string selection transistor SST may be connected to a corresponding bitline (e.g., one of BL1, BL2, and BL3), and each ground selection transistor GST may be connected to the common source line CSL.

Wordlines (e.g., WL1) having the same or similar height may be connected in common, and the ground selection lines GSL1 to GSL3 and the string selection lines SSL1 to SSL3 may be separated. In <FIG>, the memory block BLKi is illustrated as being coupled to eight gate lines GTL1 to GTL8 and three bitlines BL1 to BL3. Each memory block in the memory cell array <NUM> may be coupled to various numbers of wordlines and various numbers of bitlines.

Referring to <FIG>, a system <NUM> may include a host device <NUM>, a storage device <NUM> and a retimer <NUM> disposed between the host device <NUM> and the storage device <NUM>. In some exemplary embodiments, the host device <NUM> may be mounted on a motherboard MBD <NUM>, the retimer <NUM> may be mounted on a RCD card <NUM>, and the storage device <NUM> may be mounted on an add-in card AICD <NUM>. The motherboard <NUM>, the RCD card <NUM> and the add-in card <NUM> may be electrically connected through connectors CNT.

As described above, the storage device <NUM> may reduce power consumption of the storage device <NUM> and prevent transfer delay from the storage device <NUM> to the host device <NUM> by controlling the frequency of the internal clock signal of the storage device <NUM> based on the monitoring result of the state of the transmission buffer and the state of the transmission flow controller.

The inventive concept may be applied to any electronic devices and systems requiring signal transfer. For example, the inventive concept may be applied to systems such as a memory card, a solid state drive (SSD), an embedded multimedia card (eMMC), a universal flash storage (UFS), a mobile phone, a smart phone, a personal digital assistant (PDA), a portable multimedia player (PMP), a digital camera, a camcorder, a personal computer (PC), a server computer, a workstation, a laptop computer, a digital TV, a set-top box, a portable game console, a navigation system, a wearable device, an internet of things (IoT) device, an internet of everything (IoE) device, an e-book, a virtual reality (VR) device, an augmented reality (AR) device, a server system, an automotive driving system, etc..

Claim 1:
A system (<NUM>) comprising:
a transmission device (<NUM>, <NUM>) and a reception device (<NUM>, <NUM>) that are connected through a link (<NUM>),
the reception device (<NUM>, <NUM>) including:
a reception buffer (RBF1, RBF2) configured to receive and store transaction layer packets; and
a reception flow controller (RFC1, RFC2) configured to generate flow control packets by monitoring an occupation state of the reception buffer (RBF1, RBF2),
the transmission device (<NUM>, <NUM>) including:
a transmission buffer (TBF1, TBF2) configured to store pending transaction layer packets to be transferred to the reception device (<NUM>, <NUM>);
a transmission flow controller (TFC1, TFC2) configured to control a flow of transaction layer packets to be transferred to the reception device (<NUM>, <NUM>) based on the flow control packets received from the reception device (<NUM>, <NUM>); and
a dynamic frequency controller (DFC1, DFC2) configured to control a frequency of an internal clock signal of the transmission device (<NUM>, <NUM>) by monitoring a state of the transmission buffer (TBF1, TBF2) and a state of the transmission flow controller (TFC1, TFC2),
wherein:
the transmission flow controller (TFC1, TFC2) is configured to:
determine whether a storage space of the reception buffer (RBF1, RBF2) is insufficient to store the transaction layer packets, based on a difference between a limit credit and a consumed credit where the limit credit is updated based on an allocated credit included in the flow control packets and the consumed credit corresponds to a number of the transaction layer packets that are transferred to the reception device (<NUM>, <NUM>), and
block transmission of the transaction layer packets to the reception device (<NUM>, <NUM>) when the transmission flow controller (TFC1, TFC2) determines that the storage space of the reception buffer (RBF1, RBF2) is insufficient to store the transaction layer packets; and
the dynamic frequency controller (DFC1, DFC2) is configured to increase the frequency of the internal clock signal when a flow delay state occurs such that a number of the pending transaction layer packets stored in the transmission buffer (TBF1, TBF2) is equal to or greater than one and the transmission flow controller (TFC1, TFC2) blocks the transmission of the transaction layer packets to the reception device (<NUM>, <NUM>).