KR102101419B1 - Method for routing table lookup and memory system implementing the same - Google Patents
Method for routing table lookup and memory system implementing the same Download PDFInfo
- Publication number
- KR102101419B1 KR102101419B1 KR1020190024774A KR20190024774A KR102101419B1 KR 102101419 B1 KR102101419 B1 KR 102101419B1 KR 1020190024774 A KR1020190024774 A KR 1020190024774A KR 20190024774 A KR20190024774 A KR 20190024774A KR 102101419 B1 KR102101419 B1 KR 102101419B1
- Authority
- KR
- South Korea
- Prior art keywords
- memory
- routing table
- memory bank
- target
- node
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/54—Organization of routing tables
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/60—Router architectures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/901—Buffering arrangements using storage descriptor, e.g. read or write pointers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9063—Intermediate storage in different physical parts of a node or terminal
- H04L49/9078—Intermediate storage in different physical parts of a node or terminal using an external memory or storage device
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
Description
본 발명은 인터넷 프로토콜 라우팅 테이블 검색 방법 및 이를 구현하는 고대역폭 메모리 시스템에 관한 것이다.The present invention relates to an Internet protocol routing table search method and a high bandwidth memory system implementing the same.
수년간 인터넷 기술의 발전으로 인해 IP 트래픽이 기하급수적으로 증가하였다. 방대한 양의 IP 트래픽을 원활히 전송하기 위해서는 라우터가 패킷을 안정적으로 처리하는 것이 필수적이며, 이는 라우터가 높은 수준의 시스템 가용성을 가져야하는 것을 의미한다.IP traffic has grown exponentially over the years due to the development of Internet technology. In order to transmit a large amount of IP traffic smoothly, it is essential for the router to process packets reliably, which means that the router must have a high level of system availability.
한편, 기존에 상용 중인 대부분의 라우터는 높은 라우팅 성능을 위해 라우팅 테이블을 디램(Dynamic Random Access Memory, DRAM)에 저장한다. 그러나, DRAM은 전기가 공급되지 않는 경우 메모리에 저장된 데이터가 삭제된다는 단점이 있으며, 이로 인해 라우터에 장애가 발생하여 전력이 유실되는 경우 대용량의 라우팅 테이블을 다시 구축해야하는 문제가 발생한다.On the other hand, most of the routers currently in use store routing tables in DRAM (Dynamic Random Access Memory, DRAM) for high routing performance. However, DRAM has a disadvantage in that data stored in memory is deleted when electricity is not supplied, and this causes a problem in that a large-capacity routing table must be rebuilt when power is lost due to a failure in the router.
이와 같은 문제를 해결하기 위해, 라우팅 테이블을 비휘발성 메모리에 저장하여 라우터의 시스템 가용성을 향상시키는 방법이 있으나, 이 경우 비휘발성 메모리의 특성상 라우팅 테이블을 참조하기 위해 메모리에 접근하는 속도가 낮아지는 문제가 발생한다.To solve this problem, there is a method to improve the system availability of the router by storing the routing table in non-volatile memory, but in this case, the speed of accessing the memory to refer to the routing table is reduced due to the nature of the non-volatile memory. Occurs.
본 발명이 해결하고자 하는 과제는 라우팅 테이블을 상변화 메모리(Phase Change Memory, PCM)에 저장하여 시스템의 높은 가용성을 확보하되, 트라이(trie) 기반 라우팅 테이블이 조회될 때 말단 노드가 아닌 노드들에 한정하여 외부 표시기 (External indicators)만 읽도록 하여 성능을 향상시키는 기술을 제공하는 것이다.The problem to be solved by the present invention is to secure the high availability of the system by storing the routing table in a phase change memory (PCM), but to nodes other than the terminal node when the trie-based routing table is queried. It provides a technique to improve performance by only reading external indicators.
또한, 본 발명이 해결하고자 하는 과제는 복수의 라우팅 테이블 사본이 존재할 때, 사본 별로 동일한 개수의 전용 메모리 뱅크를 부여하여, 패킷 라우팅을 빠르게 수행하기 위해 접근할 메모리 뱅크를 효율적으로 결정하는 기술을 제공하는 것이다.In addition, the problem to be solved by the present invention is to provide a technique for efficiently determining a memory bank to be accessed in order to quickly perform packet routing by granting the same number of dedicated memory banks for each copy when multiple routing table copies exist. Is to do.
또한, 본 발명이 해결하고자 하는 과제는 메모리 시스템 내 복수의 라우팅 테이블의 복사본이 존재할 때, 메모리 뱅크마다 존재하는 버퍼가 효율적으로 사용될 수 있도록 공유 버퍼를 설계하는 기술을 제공하는 것이다.In addition, a problem to be solved by the present invention is to provide a technique for designing a shared buffer so that buffers present in each memory bank can be efficiently used when a plurality of copies of routing tables exist in the memory system.
본 발명의 일 실시예에 따른 메모리 시스템은 IP 주소에 따른 다음 홉(next hop) 정보를 표현하기 위해 복수의 노드들 및 상기 복수의 노드들을 연결하는 복수의 브랜치들로 구현된 라우팅 테이블을 저장하는 메모리, 입력 패킷의 IP 주소를 적어도 하나 이상의 단위 주소들로 분할하고, 상기 라우팅 테이블의 외부 표시기를 통해 상기 단위 주소들과 관련된 대상 노드들을 순차적으로 탐색하여 상기 대상 노드들 중에서 자식 노드를 갖지 않는 말단 노드를 결정하고, 상기 라우팅 테이블의 내부 표시기를 통해 상기 말단 노드에 대응하는 다음 홉 정보를 결정하는 메모리 컨트롤러를 포함하고, 상기 외부 표시기는 상기 라우팅 테이블의 각 노드들이 자식 노드를 갖는지 여부에 대한 정보를 포함하고, 상기 내부 표시기는 상기 각 노드들이 상기 말단 노드인 경우 상기 말단 노드에 대응하는 다음 홉 정보를 포함하고, 상기 복수의 노드들은 상기 외부 표시기 및 상기 내부 표시기를 각각 포함한다.A memory system according to an embodiment of the present invention stores a routing table implemented with a plurality of nodes and a plurality of branches connecting the plurality of nodes to express next hop information according to an IP address. The terminal that does not have a child node among the target nodes by sequentially dividing the IP address of the memory and the input packet into at least one unit address and sequentially searching target nodes related to the unit addresses through an external indicator of the routing table And a memory controller for determining a node and determining next hop information corresponding to the end node through an internal indicator in the routing table, wherein the external indicator is information about whether each node in the routing table has a child node. Including, the internal indicator is that each of the nodes is the terminal node Right side includes next hop information corresponding to the end node, and the plurality of nodes includes the outer indicator and the inner indicator, respectively.
상기 메모리는 상변화 메모리(Phase Change Memory, PCM)로 구현된다.The memory is implemented as a phase change memory (PCM).
상기 메모리는 비휘발성 메모리(Non-Volatile Memory)로 구현된다.The memory is implemented as a non-volatile memory (Non-Volatile Memory).
상기 메모리는 상기 라우팅 테이블의 복사본을 내부에 구성된 복수의 메모리 뱅크들에 각각 저장하는 메모리 뱅크 그룹, 각 메모리 뱅크들에 독립적으로 할당되는 복수의 로컬 버퍼들 및 상기 메모리 뱅크 그룹에 독립적으로 할당되고 상기 복수의 로컬 버퍼들과 연동된 공유 버퍼를 포함한다.The memory is a memory bank group that stores a copy of the routing table in a plurality of memory banks configured therein, a plurality of local buffers that are independently allocated to each memory bank, and is independently allocated to the memory bank group and the It includes a shared buffer interlocked with a plurality of local buffers.
상기 메모리 컨트롤러는 각 메모리 뱅크들로의 접근 빈도를 고려하여, 상기 복수의 메모리 뱅크들 중에서 상기 다음 홉 정보를 결정하기 위해 접근할 대상 메모리 뱅크를 결정한다.The memory controller determines a target memory bank to access in order to determine the next hop information among the plurality of memory banks in consideration of the frequency of access to each memory bank.
상기 메모리 컨트롤러는 상기 복수의 메모리 뱅크들 중에서 버퍼 히트 값(buffer hit value)이 임계 버퍼 히트 값 미만인 라우팅 테이블의 복사본을 저장하는 제1 메모리 뱅크를 상기 대상 메모리 뱅크로 결정한다.The memory controller determines, as the target memory bank, a first memory bank storing a copy of a routing table whose buffer hit value is less than a threshold buffer hit value among the plurality of memory banks.
상기 메모리 컨트롤러는 상기 제1 메모리 뱅크가 존재하지 않는 경우, 유휴 상태(Idle state)인 라우팅 테이블의 복사본을 저장하는 제2 메모리 뱅크를 상기 대상 메모리 뱅크로 결정한다.When the first memory bank does not exist, the memory controller determines a second memory bank that stores a copy of the routing table in an idle state as the target memory bank.
상기 메모리 컨트롤러는 상기 제2 메모리 뱅크가 존재하지 않는 경우, 이전에 바인딩 된 라우팅 테이블의 복사본을 저장하는 제3 메모리 뱅크를 상기 대상 메모리 뱅크로 결정한다.When the second memory bank does not exist, the memory controller determines the third memory bank that stores a copy of the previously bound routing table as the target memory bank.
상기 메모리 컨트롤러는 상기 제3 메모리 뱅크가 존재하지 않는 경우, 가장 적게 바인딩 된 라우팅 테이블의 복사본을 저장하는 제4 메모리 뱅크를 상기 대상 메모리 뱅크로 결정한다.When the third memory bank does not exist, the memory controller determines the fourth memory bank storing the copy of the least bound routing table as the target memory bank.
본 발명의 일 실시예에 따른 메모리 컨트롤러가 메모리에 저장된 라우팅 테이블을 검색하는 방법은 입력 패킷의 IP 주소를 수신하는 단계, 상기 라우팅 테이블의 복사본을 각각 저장하는 복수의 메모리 뱅크들로의 접근 빈도를 고려하여, 상기 IP 주소에 대응하는 다음 홉 정보를 결정하기 위해 접근할 대상 메모리 뱅크를 결정하는 단계, 상기 IP 주소를 적어도 하나 이상의 단위 주소들로 분할하고, 상기 대상 메모리 뱅크에 저장된 라우팅 테이블의 외부 표시기를 통해 상기 단위 주소들과 관련된 대상 노드들을 순차적으로 탐색하여 상기 대상 노드들 중에서 자식 노드를 갖지 않는 말단 노드를 결정하는 단계, 그리고 상기 라우팅 테이블의 내부 표시기를 통해 상기 말단 노드에 대응하는 다음 홉 정보를 결정하는 단계를 포함하고, 상기 라우팅 테이블은 상기 IP 주소에 따른 다음 홉 정보를 표현하기 위해 복수의 노드들 및 상기 복수의 노드들을 연결하는 복수의 브랜치들로 구현되고, 상기 외부 표시기는 상기 라우팅 테이블의 각 노드들이 자식 노드를 갖는지 여부에 대한 정보를 포함하고, 상기 내부 표시기는 상기 각 노드들이 상기 말단 노드인 경우 상기 말단 노드에 대응하는 다음 홉 정보를 포함하고, 상기 복수의 노드들은 상기 외부 표시기 및 상기 내부 표시기를 각각 포함한다.A method for a memory controller according to an embodiment of the present invention to search for a routing table stored in memory includes receiving an IP address of an input packet and access frequency to a plurality of memory banks each storing a copy of the routing table. Considering, determining a target memory bank to access to determine next hop information corresponding to the IP address, dividing the IP address into at least one unit address, and outside the routing table stored in the target memory bank Sequentially searching for target nodes related to the unit addresses through an indicator to determine an end node without a child node among the target nodes, and a next hop corresponding to the end node through an internal indicator of the routing table Determining information, and the routing table In order to express next hop information according to the IP address, a plurality of nodes and a plurality of branches connecting the plurality of nodes are implemented, and the external indicator indicates whether each node of the routing table has a child node. Information, and the internal indicator includes next hop information corresponding to the terminal node when each node is the terminal node, and the plurality of nodes each include the external indicator and the internal indicator.
상기 대상 메모리 뱅크를 결정하는 단계는 상기 복수의 메모리 뱅크들 중에서, 버퍼 히트 값(buffer hit value)이 임계 버퍼 히트 값 미만인 라우팅 테이블의 복사본을 저장하는 제1 메모리 뱅크를 상기 대상 메모리 뱅크로 결정한다.In the determining of the target memory bank, among the plurality of memory banks, a first memory bank storing a copy of a routing table having a buffer hit value less than a threshold buffer hit value is determined as the target memory bank. .
상기 대상 메모리 뱅크를 결정하는 단계는 상기 제1 메모리 뱅크가 존재하지 않는 경우, 유휴 상태(Idle state)인 라우팅 테이블의 복사본을 저장하는 제2 메모리 뱅크를 상기 대상 메모리 뱅크로 결정한다.In the determining of the target memory bank, when the first memory bank does not exist, the second memory bank storing a copy of the routing table in an idle state is determined as the target memory bank.
상기 대상 메모리 뱅크를 결정하는 단계는 상기 제2 메모리 뱅크가 존재하지 않는 경우, 이전에 바인딩 된 라우팅 테이블의 복사본을 저장하는 제3 메모리 뱅크를 상기 대상 메모리 뱅크로 결정한다.In the determining of the target memory bank, when the second memory bank does not exist, the third memory bank storing a copy of the previously bound routing table is determined as the target memory bank.
상기 대상 메모리 뱅크를 결정하는 단계는 상기 제3 메모리 뱅크가 존재하지 않는 경우, 가장 적게 바인딩 된 라우팅 테이블의 복사본을 저장하는 제4 메모리 뱅크를 상기 대상 메모리 뱅크로 결정한다.In the determining of the target memory bank, when the third memory bank does not exist, the fourth memory bank storing a copy of the least bound routing table is determined as the target memory bank.
상기 메모리는 상변화 메모리(Phase Change Memory, PCM)로 구현된다.The memory is implemented as a phase change memory (PCM).
상기 메모리는 비휘발성 메모리(Non-Volatile Memory)로 구현된다.The memory is implemented as a non-volatile memory (Non-Volatile Memory).
본 발명에 따르면, 패킷 라우팅을 수행하기 위해 임의의 트라이 노드에 접근할 때, 추가 탐색이 필요한 자식 노드를 외부 표시기(External Indicators)를 통해 메모리 내에서 우선적으로 결정하면, 존재하지 않을 시에만 내부 표시기 (Internal Indicators)로 노드 내 홉 정보를 추가 조회하기 때문에 상변화 메모리 기반 라우팅 테이블의 조회 성능을 향상시킬 수 있다.According to the present invention, when an arbitrary tri-node is approached to perform packet routing, if a child node requiring additional discovery is preferentially determined in memory through external indicators, the internal indicator only exists when it does not exist Because (Internal Indicators) additional hop search of the hop information in the node, the search performance of the phase change memory-based routing table can be improved.
또한, 본 발명에 따르면, 예상 처리 속도를 고려하여 패킷 라우팅 수행을 위한 메모리 뱅크를 결정함으로써, 메모리 대역폭 효율을 향상시킬 수 있다.In addition, according to the present invention, memory bandwidth efficiency can be improved by determining a memory bank for performing packet routing in consideration of an expected processing speed.
또한, 본 발명에 따르면, 다수의 접근이 시도되는 라우팅 테이블 노드 및 수정이 필요한 노드를 공유 버퍼에 저장함으로써, 메모리 뱅크들의 버퍼 접근성을 향상시킬 수 있다.Further, according to the present invention, buffer accessibility of memory banks can be improved by storing a routing table node in which multiple accesses are attempted and a node requiring modification in a shared buffer.
도 1은 한 실시예에 따른 메모리 시스템을 설명하는 도면이다.
도 2는 한 실시예에 따른 이진 트라이 구조로 구현된 라우팅 테이블이다.
도 3은 한 실시예에 따른 내부 표시기 및 외부 표시기를 설명하는 도면이다.
도 4는 메모리 컨트롤러가 복수의 메모리 뱅크들 중에서 접근할 메모리 뱅크를 결정하는 방법을 설명하는 도면이다.
도 5는 메모리 컨트롤러가 메모리에 저장된 라우팅 테이블을 검색하는 방법을 설명하는 도면이다.1 is a diagram illustrating a memory system according to an embodiment.
2 is a routing table implemented with a binary tri structure according to an embodiment.
3 is a diagram illustrating an internal indicator and an external indicator according to an embodiment.
FIG. 4 is a diagram illustrating a method for a memory controller to determine a memory bank to be accessed from among a plurality of memory banks.
5 is a diagram illustrating a method for a memory controller to search a routing table stored in memory.
아래에서는 첨부한 도면을 참고로 하여 본 발명의 실시예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.Hereinafter, exemplary embodiments of the present invention will be described in detail with reference to the accompanying drawings so that those skilled in the art to which the present invention pertains may easily practice. However, the present invention can be implemented in many different forms and is not limited to the embodiments described herein. In addition, in order to clearly describe the present invention in the drawings, parts irrelevant to the description are omitted, and like reference numerals are assigned to similar parts throughout the specification.
명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.Throughout the specification, when a part “includes” a certain component, it means that the component may further include other components, not to exclude other components, unless otherwise stated.
도 1은 한 실시예에 따른 메모리 시스템을 설명하는 도면이고, 도 2는 한 실시예에 따른 이진 트라이 구조로 구현된 라우팅 테이블이고, 도 3은 한 실시예에 따른 내부 표시기 및 외부 표시기를 설명하는 도면이다.1 is a diagram illustrating a memory system according to an embodiment, FIG. 2 is a routing table implemented with a binary tri structure according to an embodiment, and FIG. 3 is a diagram illustrating an internal indicator and an external indicator according to an embodiment It is a drawing.
도 1을 참고하면, 메모리 시스템(1000)은 메모리(100) 및 메모리 컨트롤러(200)를 포함한다.Referring to FIG. 1, the memory system 1000 includes a
구체적으로, 메모리(100)는 상변화 메모리(Phase Change Memory, PCM) 또는 비휘발성 메모리(Non-Volatile Memory) 중 어느 하나로 구현된다.Specifically, the
여기서, 비휘발성 메모리는 비대칭적 읽기(Read Asymmetric) 속성을 가진 비휘발성 메모리를 포함한다. 구체적으로, 같은 트랜젝션 상에서도 메모리가 비대칭적 읽기 속성을 가진 비휘발성 메모리인 경우 트랜젝션의 일부는 먼저 버퍼에 래치될 수 있는데, 본 발명은 이러한 비대칭적 읽기 속성을 가진 비휘발성 메모리의 경우에도 적용될 수 있다.Here, the nonvolatile memory includes a nonvolatile memory having a read asymmetric property. Specifically, even in the same transaction, when the memory is a nonvolatile memory having an asymmetric read attribute, a part of the transaction may be latched in a buffer first, and the present invention can also be applied to a nonvolatile memory having such an asymmetric read attribute. .
예를 들면, 도 1에서 도시된 바와 같이, 메모리(100)의 모듈은 듀얼 인라인 메모리 모듈(DIMM, Dual In-line Memory Module)로 구현될 수 있으며, 이 경우, 메모리(100)는 복수의 상변화 메모리들 중 어느 하나일 수 있다. 메모리(100)는 메모리 뱅크들로 구성된 메모리 뱅크 그룹들, 로컬 버퍼들, 공유 버퍼들 및 비트 검사기를 포함할 수 있는데, 이에 대한 자세한 내용은 후술한다.For example, as illustrated in FIG. 1, a module of the
한편, 메모리(100)는 IP 주소에 따른 다음 홉(next hop) 정보를 표현하기 위해 복수의 노드들 및 복수의 노드들을 연결하는 복수의 브랜치들로 구현된 라우팅 테이블을 저장한다.On the other hand, the
메모리(100)에 저장된 라우팅 테이블의 각 노드들은 라우팅 테이블의 각 노드들이 자식 노드를 갖는지 여부에 대한 정보를 포함하는 외부 표시기 및 각 노드들이 말단 노드인 경우 말단 노드에 대응하는 다음 홉 정보를 포함하는 내부 표시기를 각각 포함한다.Each node of the routing table stored in the
이하, 메모리(100)에 저장된 라우팅 테이블에 대해 도 2 및 도 3을 통해 설명한다.Hereinafter, the routing table stored in the
도 2는 한 실시예에 따른 이진 트라이 구조로 구현된 라우팅 테이블이고, 도 3은 한 실시예에 따른 내부 표시기 및 외부 표시기를 설명하는 도면이다.2 is a routing table implemented with a binary tri structure according to an embodiment, and FIG. 3 is a diagram illustrating an internal indicator and an external indicator according to an embodiment.
도 2를 참고하면, 라우팅 테이블은 복수의 노드들 및 복수의 노드들을 연결한 복수의 브랜치들로 구성된다. IP 주소에서 "0"에 해당하는 부분은 노드의 왼쪽 브랜치를 통해 이동하며, IP 주소에서 "1"에 해당하는 부분은 노드의 오른쪽 브랜치를 통해 이동한다. 특정 IP 주소가 입력되면, 해당 과정을 통해 자식 노드가 없는 말단 노드(Terminal Node)까지 이동하고 말단 노드에 해당하는 값을 특정 IP 주소의 다음 홉 정보로 결정하게 된다.Referring to FIG. 2, a routing table is composed of a plurality of nodes and a plurality of branches connecting a plurality of nodes. The part corresponding to "0" in the IP address moves through the left branch of the node, and the part corresponding to "1" in the IP address moves through the right branch of the node. When a specific IP address is input, the process moves to a terminal node without a child node and determines a value corresponding to the terminal node as the next hop information of the specific IP address.
예를 들면, IP 주소 "101111111"이 입력되는 경우, 해당 과정을 통해 결정된 노드들(10, 12, 14, 15, 16, 18 및 19)을 따라 말단 노드(20)까지 이동하게 되며, 말단 노드(20)에 다음 홉 정보 "G"가 매핑되어 있으므로 IP 주소 "101111111"에 대한 다음 홉 정보는 "G"로 결정되게 된다.For example, when the IP address "101111111" is input, it moves to the
도 2의 라우팅 테이블의 각 노드들에 포함된 내부 표시기 및 외부 표시기를 도시하면 도 3과 같다.3 illustrates an internal indicator and an external indicator included in each node of the routing table of FIG. 2.
도 3을 참고하면, 트리 비트맵 알고리즘을 통해 구현된 라우팅 테이블은 내부 표시기(30)와 외부 표시기(40)를 포함한다.Referring to FIG. 3, a routing table implemented through a tree bitmap algorithm includes an
내부 표시기(30)는 IP 주소에 따른 다음 홉 정보를 관리하며, 외부 표시기(40)는 자식 노드들의 존재 여부를 관리한다.The
예를 들면, 도 3에서, 내부 표시기(30)를 구성하는 각 노드들이 10진법으로 표기되었을 때 "0" 내지 "7"까지의 값을 갖는 경우, 외부 표시기(40)는 8개의 필드를 포함하고, 특정 필드에 대응하는 노드가 자식 노드를 갖는 경우 필드 값을 "1"로, 자식 노드를 갖지 않는 경우 필드 값을 "0"으로 표시할 수 있다.For example, in FIG. 3, when each node constituting the
만일 IP 주소 "101111111"이 입력되는 경우, IP 주소 "101111111"는 3개의 단위 주소들 "101", "111" 및 "111"로 분할될 수 있다.If the IP address "101111111" is input, the IP address "101111111" may be divided into three unit addresses "101", "111" and "111".
"101"을 10진법으로 표기하면 "5"이고, 외부 표시기(40)를 참조하면 "5"의 필드 값이 "1"이므로 자식 노드가 존재한다. 따라서, 자식 노드가 존재하므로 차일드 포인터(Child Pointer)를 통해 다음 단위 주소인 "111"로 이동한다.If "101" is written in decimal notation, "5", and referring to the
"111"을 10진법으로 표기하면 "7"이고, 외부 표시기(40)를 참조하면 "7"의 필드 값 또한 "1"이므로 자식 노드가 존재한다. 따라서, 이 경우에도 차일드 포인터를 통해 다음 단위 주소인 "111"로 이동한다.If "111" is written in decimal notation, "7", and referring to the
"111"에 대한 10진법 표기 "7"에 대해 외부 표시기(40)를 참조하면 "7"의 필드 값이 "0"이다. 이 경우, 자식 노드가 존재하지 않으므로, 내부 표시기(30) 및 다음 홉 포인터를 참조하여, 이에 대응하는 다음 홉 정보 "G"를 결정한다.Referring to the
즉, 내부 표시기(30) 및 외부 표시기(40)를 사용하여 IP 주소에 대응하는 다음 홉 정보를 결정하는 경우, 말단 노드가 결정될 때까지 내부 표시기(30)에 접근하지 않고 외부 표시기(40)만을 이용하여 결정할 수 있게 된다.That is, when determining the next hop information corresponding to the IP address using the
메모리 컨트롤러(200)는 IP 주소가 입력된 경우, 메모리(100)에 저장된 라우팅 테이블을 이용하여 입력된 IP 주소에 대응하는 다음 홉 정보를 결정한다.When the IP address is input, the
예를 들면, 메모리(100)가 상변화 메모리인 경우, 메모리 컨트롤러(200)는 바인더 유닛(210), 쿼리 정보(220), DDR3 인터페이스 유닛(230), 주소 결정 유닛(ADU, Address Determining Unit)(240) 및 다음 홉 정보 결정 유닛(250)을 통해 입력된 IP 주소에 대응하는 다음 홉 정보를 결정할 수 있다.For example, when the
상변화 메모리에 대한 메모리 컨트롤러가 위와 같은 유닛들을 통해 다음 홉 정보를 결정하는 일반적인 방법은 이미 공지된 기술이므로 본 명세서에서는 자세한 설명을 생략하며, 이하에서는 공지 기술과 차별화된 메모리 컨트롤러(200)의 기능에 대해 설명한다.Since the general method for determining the next hop information through the above units by the memory controller for the phase change memory is a well-known technique, a detailed description is omitted herein, and the function of the
메모리 컨트롤러(200)는 입력 패킷의 IP 주소를 적어도 하나 이상의 단위 주소들로 분할한다.The
예를 들면, 메모리 컨트롤러(200)는 추출한 IP 주소가 "101111111"인 경우, IP 주소를 3비트씩 분할하여 단위 주소 "101", "111" 및 "111"를 생성할 수 있다.For example, when the extracted IP address is "101111111", the
메모리 컨트롤러(200)는 메모리(100)에 저장된 라우팅 테이블의 외부 표시기 및 내부 표시기를 이용하여 IP 주소에 대응하는 다음 홉 정보를 결정한다.The
구체적으로, 메모리 컨트롤러(200)는 외부 표시기를 통해 단위 주소들과 관련된 대상 노드들을 순차적으로 탐색하여 대상 노드들 중에서 자식 노드를 갖지 않는 말단 노드를 결정하고, 내부 표시기를 통해 말단 노드에 대응하는 다음 홉 정보를 결정한다.Specifically, the
예를 들면, 도 3에 도시된 바와 같이 외부 표시기(40)가 구현된 경우, 메모리 컨트롤러(200)는 첫 번째 단위 주소 "101"의 10진법 표기가 "5"임을 결정하고, 외부 표시기(40)에서 단위 주소 "101"에 대응하는 "5"의 필드 값이 "1"임을 확인하고(자식 노드가 존재), 두 번째 단위 주소 "111"에 대해 동일한 과정을 수행한다.For example, when the
두 번째 단위 주소 "111"의 경우에도 외부 표시기(40)에서 "7"의 필드 값이 "1"이므로(자식 노드가 존재), 세 번째 단위 주소 "111"에 대해 동일한 과정을 수행한다.Even in the case of the second unit address "111", since the field value of "7" in the
세 번째 단위 주소 "111"의 경우 외부 표시기(40)에서 "7"의 필드 값이 "0"이므로 자식 노드가 존재하지 않는다.In the case of the third unit address "111", the child node does not exist because the field value of "7" in the
따라서, 메모리 컨트롤러(200)는 세 번째 단위 주소 "111"에 대응하는 노드를 말단 노드로 결정하고, 내부 표시기(30)를 참조하여 말단 노드에 대응하는 다음 홉 정보 "G"를 결정할 수 있다.Therefore, the
위와 같은 과정에서, 메모리 컨트롤러(200)는 내부 표시기(30)에 접근하지 않고 외부 표시기(40)만을 이용하여 말단 노드를 결정하고, 말단 노드가 결정된 이후 내부 표시기(30)에 접근하여 IP 주소에 대응하는 다음 홉 정보를 결정하는바, 메모리(100)에 접근하는 시간이 줄어들어 결과적으로 라우팅 테이블의 조회 성능을 향상시킬 수 있다.In the above process, the
구체적으로, 만일 외부 표시기(40)만을 이용하여 말단 노드를 결정하지 않는 경우, 말단 노드가 아닌 노드들에 대해서도 다음 홉 정보 유무를 판단하게 되며, 이 경우 모든 메모리 트랜잭션을 요청하게 된다. 예를 들면, 64 바이트의 트랜잭션을 처리하고자 하는 경우, 말단 노드가 아닌 노드들에 대해서도 외부 32 바이트와 내부 32 바이트가 모두 패치(fetch)되어야 한다.Specifically, if the end node is not determined using only the
그러나, 외부 표시기(40)만을 이용하여 말단 노드를 결정하고, 말단 노드가 결정된 이후 내부 표시기(30)에 접근하여 IP 주소에 대응하는 다음 홉 정보를 결정하는 경우, 외부 표시기(40)를 통해 말단 노드인 경우에 한하여 내부 표시기(30)에 선택적으로 접근하는바, 본래 접근 대기 시간의 절반에 가까운 접근 대기 시간을 가질 수 있다.However, if the end node is determined using only the
이를 구현하기 위해, 내부 표시기(30)를 LSB(Least Significant Bit)에 매핑하고, 외부 표시기(40)를 MSB(Most Significant Bit)와 매핑하며, 이 경우 외부 표시기(40)가 내부 표시기(30)보다 먼저 래치된다. 예를 들면, 노드 주소에 주소 핀을 통한 추가적인 7 비트 스트라이드(stride)가 제공되면, MSB가 메모리(100)에서 읽혀지는 동안 7 비트 스트라이드가 128 비트 벡터로 디코딩된다. 이후, 모든 칩에서 비트 검사기(140)에 의해 MSB로부터 추출된 128 비트 벡터 및 128 비트 외부 표시기(40)에 대해 비트 AND 연산이 수행된다. 대상 칩이 말단 노드가 아님을 표시하면, 두 번째 읽기 비활성화 신호가 모든 칩에 브로드 캐스팅되고 LSB에서 나머지 읽기가 취소된다. 노드를 가져온 이후, 메모리 컨트롤러(100)의 주소 결정 유닛(240)은 다음 노드의 주소를 요청한다. 이와 같은 과정을 거쳐 다음 홉 정보 결정 유닛(250)이 다음 홉 정보를 결정하면 라우팅 테이블의 검색이 종료된다.To implement this, the
한편, 메모리(100)는 복수의 메모리 뱅크 그룹들(110 및 111), 복수의 로컬 버퍼들(120 및 121) 및 복수의 공유 버퍼들(130 및 131)을 포함한다.Meanwhile, the
복수의 메모리 뱅크 그룹들(110 및 111)은 각각 라우팅 테이블의 복사본을 내부에 구성된 복수의 메모리 뱅크들에 저장한다.The plurality of
이 경우, 동일한 메모리 뱅크 그룹에 포함된 메모리 뱅크들은 동일한 라우팅 테이블의 복사본을 저장한다. 예를 들면, 제1 메모리 뱅크 그룹(110)의 메모리 뱅크들(110a 내지 110d)은 동일한 라우팅 테이블의 복사본을 저장할 수 있다.In this case, the memory banks included in the same memory bank group store a copy of the same routing table. For example, the
복수의 로컬 버퍼들(120 및 121)은 각 메모리 뱅크들에 독립적으로 할당된다.The plurality of
예를 들면, 제1 메모리 뱅크 그룹(110)의 메모리 뱅크들(110a 내지 110d)에는 제1 로컬 버퍼들(120a 내지 120d)이 각각 할당된다.For example, the first
복수의 공유 버퍼들(130 및 131)은 복수의 메모리 뱅크 그룹(110 및 111)에 각각 독립적으로 할당되고 복수의 로컬 버퍼들(120 및 121)과 각각 연동된다.The plurality of shared
예를 들면, 제1 공유 버퍼(130)는 제1 메모리 뱅크 그룹(110)에 독립적으로 할당되고, 제1 로컬 버퍼들(120a 내지 120d)과 연동된다.For example, the first shared
복수의 공유 버퍼들(130 및 131)을 메모리(100)에 구축함으로써, 메모리(100)는 복수의 메모리 뱅크 그룹들(110 및 111)이 저장하는 라우팅 테이블의 복사본의 중복된 내용을 복수의 로컬 버퍼들(120 및 121)에 올리는 것을 피할 수 있어 복수의 로컬 버퍼들(120 및 121)을 효율적으로 이용할 수 있다.By constructing a plurality of shared
구체적으로, 복수의 로컬 버퍼들(120 및 121)에 미리 설정된 임계 빈도 이상으로 쓰기 요청이 발생하는 경우, 쓰기 요청은 라우팅 테이블의 복사본들의 일관성을 해칠 우려가 있다. 즉, 쓰기 요청은 라우팅 테이블의 모든 복사본들에 즉시 커밋(commit)되어야 하므로, 라우팅 테이블의 모든 복사본들은 쓰기 요청에 앞서 복수의 로컬 버퍼들(120 및 121)을 제거(evict)하여야 한다.Specifically, when a write request occurs more than a preset threshold frequency in the plurality of
이 과정에서 버퍼 누락이 발생할 수 있는데, 복수의 공유 버퍼들(130 및 131)이 구축된 경우, 복수의 공유 버퍼들(130 및 131)에 쓰기 요청이 제공되어 과도하게 복수의 로컬 버퍼들(120 및 121)이 제거되는 것을 방지할 수 있다.In this process, a buffer omission may occur. When a plurality of shared
한편, 복수의 로컬 버퍼들(120 및 121)에 쓰기 요청이 미리 설정된 임계 빈도 미만으로 발생하는 경우, 복수의 공유 버퍼들(130 및 131)은 복수의 로컬 버퍼들(120 및 121)의 희생자 버퍼(victim buffer)로 사용된다. 이 경우, 임계 버퍼 히트 값을 만족한 이후 복수의 로컬 버퍼들(120 및 121)을 제거하는 대신, 임계 버퍼 히트 값 이상의 버퍼 히트를 만족하기 위해 복수의 공유 버퍼들(130 및 131)에 라우팅 테이블의 복사본을 기록한다.On the other hand, when a write request to the plurality of
한편, 복수의 로컬 버퍼들(120 및 121) 및 복수의 공유 버퍼들(130 및 131)은 모두 LRU 알고리즘(Least Recently Used Algorithm)에 의해 관리될 수 있다.Meanwhile, the plurality of
메모리 컨트롤러(200)는 각 메모리 뱅크들로의 접근 빈도를 고려하여, 복수의 메모리 뱅크들 중에서 다음 홉 정보를 결정하기 위해 접근할 메모리 뱅크를 결정하며, 이에 대한 내용은 도 4를 통해 설명한다.The
도 4는 메모리 컨트롤러가 복수의 메모리 뱅크들 중에서 접근할 메모리 뱅크를 결정하는 방법을 설명하는 도면이다.FIG. 4 is a diagram illustrating a method for a memory controller to determine a memory bank to be accessed from among a plurality of memory banks.
도 4를 참고하면, 메모리 컨트롤러(200)는 복수의 메모리 뱅크들 각각에 저장된 라우팅 테이블의 복사본의 버퍼 히트 값(buffer hit value)을 결정하고(S100), 버퍼 히트 값이 임계 버퍼 히트 값 미만인 라우팅 테이블의 복사본이 존재하는지 확인한다(S110).Referring to FIG. 4, the
만일 버퍼 히트 값이 임계 버퍼 히트 값 미만인 라우팅 테이블의 복사본이 존재하는 경우, 메모리 컨트롤러(200)는 버퍼 히트 값이 임계 버퍼 히트 값 미만인 라우팅 테이블의 복사본을 저장하는 제1 메모리 뱅크에 접근하여 제1 메모리 뱅크에 저장된 라우팅 테이블의 복사본을 이용하여 다음 홉 정보를 결정한다(S111).If there is a copy of the routing table with a buffer hit value less than the critical buffer hit value, the
만일 버퍼 히트 값이 임계 버퍼 히트 값 미만인 라우팅 테이블의 복사본이 존재하지 않는 경우, 메모리 컨트롤러(200)는 유휴 상태(Idle state)인 라우팅 테이블의 복사본이 존재하는지 확인한다(S120).If there is no copy of the routing table whose buffer hit value is less than the threshold buffer hit value, the
만일 유휴 상태(Idle state)인 라우팅 테이블의 복사본이 존재하는 경우, 메모리 컨트롤러(200)는 유휴 상태(Idle state)인 라우팅 테이블의 복사본을 저장하는 제2 메모리 뱅크에 접근하여 제2 메모리 뱅크에 저장된 라우팅 테이블의 복사본을 이용하여 다음 홉 정보를 결정한다(S121).If a copy of the routing table in the idle state exists, the
만일 유휴 상태(Idle state)인 라우팅 테이블의 복사본이 존재하지 않는 경우, 메모리 컨트롤러(200)는 이전에 바인딩 된 라우팅 테이블의 복사본이 존재하는지 확인한다(S130).If there is no copy of the routing table in the idle state, the
만일 이전에 바인딩 된 라우팅 테이블의 복사본이 존재하는 경우, 메모리 컨트롤러(200)는 이전에 바인딩 된 라우팅 테이블의 복사본을 저장하는 제3 메모리 뱅크에 접근하여 제3 메모리 뱅크에 저장된 라우팅 테이블의 복사본을 이용하여 다음 홉 정보를 결정한다(S131).If a copy of the previously bound routing table exists, the
만일 이전에 바인딩 된 라우팅 테이블의 복사본이 존재하지 않는 경우, 메모리 컨트롤러(200)는 복수의 메모리 뱅크들 각각에 저장된 라우팅 테이블의 복사본의 바인딩 수를 결정하고(S140), 가장 적게 바인딩 된 라우팅 테이블의 복사본을 저장하는 제4 메모리 뱅크에 접근하여 제4 메모리 뱅크에 저장된 라우팅 테이블의 복사본을 이용하여 다음 홉 정보를 결정한다(S141).If a copy of the previously bound routing table does not exist, the
즉, 메모리 컨트롤러(200)는 라우팅 테이블의 복사본의 버퍼 히트 값, 유휴 상태 정보 및 바인딩 정보를 고려하여 특정 메모리 뱅크에 과도한 히트를 바인딩하는 것을 방지한다. 도 4에 도시된 방법을 통해 버퍼 히트 값이 임계 버퍼 히트 값 미만이고 이전에 바인딩 된 라우팅 테이블의 복사본에서 높은 버퍼 적중률을 유도하며, 유휴 상태이고 사용률이 낮은 라우팅 테이블의 복사본의 수를 최소화할 수 있다.That is, the
도 5는 메모리 컨트롤러가 메모리에 저장된 라우팅 테이블을 검색하는 방법을 설명하는 도면이다.5 is a diagram illustrating a method for a memory controller to search a routing table stored in memory.
도 5에서, 도 1 내지 도 4와 동일한 내용은 그 설명을 생략한다.In FIG. 5, the same contents as in FIGS. 1 to 4 are omitted.
도 5를 참고하면, 메모리 컨트롤러(200)는 입력 패킷의 IP 주소를 수신한다(S200).Referring to FIG. 5, the
메모리 컨트롤러(200)는 라우팅 테이블의 복사본을 각각 저장하는 복수의 메모리 뱅크들로의 접근 빈도를 고려하여, IP 주소에 대응하는 다음 홉 정보를 결정하기 위해 접근할 대상 메모리 뱅크를 결정한다(S210).The
구체적으로, 메모리 컨트롤러(200)는 복수의 메모리 뱅크들 중에서, 버퍼 히트 값(buffer hit value)이 임계 버퍼 히트 값 미만인 라우팅 테이블의 복사본을 저장하는 제1 메모리 뱅크를 대상 메모리 뱅크로 결정한다.Specifically, the
만일 제1 메모리 뱅크가 존재하지 않는 경우, 메모리 컨트롤러(200)는 유휴 상태(Idle state)인 라우팅 테이블의 복사본을 저장하는 제2 메모리 뱅크를 대상 메모리 뱅크로 결정한다.If the first memory bank does not exist, the
만일 제2 메모리 뱅크가 존재하지 않는 경우, 메모리 컨트롤러(200)는 이전에 바인딩 된 라우팅 테이블의 복사본을 저장하는 제3 메모리 뱅크를 대상 메모리 뱅크로 결정한다.If the second memory bank does not exist, the
만일 제3 메모리 뱅크가 존재하지 않는 경우, 메모리 컨트롤러(200)는 가장 적게 바인딩 된 라우팅 테이블의 복사본을 저장하는 제4 메모리 뱅크를 대상 메모리 뱅크로 결정한다.If the third memory bank does not exist, the
대상 메모리 뱅크를 결정하면, 메모리 컨트롤러(200)는 IP 주소를 적어도 하나 이상의 단위 주소들로 분할한다(S220).When determining the target memory bank, the
한편, 도 5에서는 대상 메모리 뱅크를 결정한 이후 IP 주소를 단위 주소들로 분할하였으나, 메모리 컨트롤러(200)는 IP 주소를 단위 주소들로 분할한 이후, 상기 방법을 통해 대상 메모리 뱅크를 결정할 수도 있다.Meanwhile, in FIG. 5, after determining the target memory bank, the IP address is divided into unit addresses, but the
메모리 컨트롤러(200)는 대상 메모리 뱅크에 저장된 외부 표시기를 통해 단위 주소들과 관련된 대상 노드들을 순차적으로 탐색하여 대상 노드들 중에서 자식 노드를 갖지 않는 말단 노드를 결정한다(S230).The
메모리 컨트롤러(200)는 대상 메모리 뱅크에 저장된 내부 표시기를 통해 말단 노드에 대응하는 다음 홉 정보를 결정한다(S240).The
본 발명에 따르면, 패킷 라우팅을 수행하기 위해 임의의 트라이 노드에 접근할 때, 추가 탐색이 필요한 자식 노드를 외부 표시기(External Indicators)를 통해 메모리 내에서 우선적으로 결정하면, 존재하지 않을 시에만 내부 표시기 (Internal Indicators)로 노드 내 홉 정보를 추가 조회하기 때문에 상변화 메모리 기반 라우팅 테이블의 조회 성능을 향상시킬 수 있다.According to the present invention, when an arbitrary tri-node is accessed to perform packet routing, if a child node requiring additional search is preferentially determined in memory through external indicators, the internal indicator is only present when it does not exist. Because (Internal Indicators) additional hop search of the hop information in the node, the search performance of the phase change memory-based routing table can be improved.
또한, 본 발명에 따르면, 예상 처리 속도를 고려하여 패킷 라우팅 수행을 위한 메모리 뱅크를 결정함으로써, 메모리 대역폭 효율을 향상시킬 수 있다.In addition, according to the present invention, memory bandwidth efficiency can be improved by determining a memory bank for performing packet routing in consideration of an expected processing speed.
또한, 본 발명에 따르면, 다수의 접근이 시도되는 라우팅 테이블 노드 및 수정이 필요한 노드를 공유 버퍼에 저장함으로써, 메모리 뱅크들의 버퍼 접근성을 향상시킬 수 있다.Further, according to the present invention, buffer accessibility of memory banks can be improved by storing a routing table node in which multiple accesses are attempted and a node requiring modification in a shared buffer.
이상에서 본 발명의 실시예에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속하는 것이다.Although the embodiments of the present invention have been described in detail above, the scope of the present invention is not limited thereto, and various modifications and improvements of those skilled in the art using the basic concept of the present invention defined in the following claims are also provided. It belongs to the scope of rights.
Claims (16)
IP 주소에 따른 다음 홉(next hop) 정보를 표현하기 위해 복수의 노드들 및 상기 복수의 노드들을 연결하는 복수의 브랜치들로 구현된 라우팅 테이블을 저장하는 메모리,
입력 패킷의 IP 주소를 적어도 하나 이상의 단위 주소들로 분할하고, 상기 라우팅 테이블의 외부 표시기를 통해 상기 단위 주소들과 관련된 대상 노드들을 순차적으로 탐색하여 상기 대상 노드들 중에서 자식 노드를 갖지 않는 말단 노드를 결정하고, 상기 라우팅 테이블의 내부 표시기를 통해 상기 말단 노드에 대응하는 다음 홉 정보를 결정하는 메모리 컨트롤러를 포함하고,
상기 외부 표시기는 상기 라우팅 테이블의 각 노드들이 자식 노드를 갖는지 여부에 대한 정보를 포함하고, 상기 내부 표시기는 상기 각 노드들이 상기 말단 노드인 경우 상기 말단 노드에 대응하는 다음 홉 정보를 포함하고, 상기 복수의 노드들은 상기 외부 표시기 및 상기 내부 표시기를 각각 포함하는 메모리 시스템.As a memory system,
Memory for storing a routing table implemented with a plurality of nodes and a plurality of branches connecting the plurality of nodes to express next hop information according to an IP address,
The IP address of the input packet is divided into at least one or more unit addresses, and the target nodes associated with the unit addresses are sequentially searched through an external indicator in the routing table to identify a terminal node having no child node among the target nodes. And a memory controller for determining next hop information corresponding to the end node through an internal indicator of the routing table,
The external indicator includes information on whether each node of the routing table has a child node, and the internal indicator includes next hop information corresponding to the terminal node when each node is the terminal node, and the A memory system in which a plurality of nodes each include the external indicator and the internal indicator.
상기 메모리는
상변화 메모리(Phase Change Memory, PCM)로 구현되는 메모리 시스템.In claim 1,
The memory
Memory system implemented with phase change memory (PCM).
상기 메모리는
비휘발성 메모리(Non-Volatile Memory)로 구현되는 메모리 시스템.In claim 1,
The memory
Memory system implemented as a non-volatile memory (Non-Volatile Memory).
상기 메모리는
상기 라우팅 테이블의 복사본을 내부에 구성된 복수의 메모리 뱅크들에 각각 저장하는 메모리 뱅크 그룹, 각 메모리 뱅크들에 독립적으로 할당되는 복수의 로컬 버퍼들 및 상기 메모리 뱅크 그룹에 독립적으로 할당되고 상기 복수의 로컬 버퍼들과 연동된 공유 버퍼를 포함하는 메모리 시스템.In claim 1,
The memory
A memory bank group that stores a copy of the routing table in a plurality of memory banks configured therein, a plurality of local buffers independently allocated to each memory bank, and a plurality of locals independently allocated to the memory bank group A memory system including a shared buffer interlocked with buffers.
상기 메모리 컨트롤러는
각 메모리 뱅크들로의 접근 빈도를 고려하여, 상기 복수의 메모리 뱅크들 중에서 상기 다음 홉 정보를 결정하기 위해 접근할 대상 메모리 뱅크를 결정하는 메모리 시스템.In claim 4,
The memory controller
A memory system that determines a target memory bank to be accessed to determine the next hop information among the plurality of memory banks in consideration of the frequency of access to each memory bank.
상기 메모리 컨트롤러는
상기 복수의 메모리 뱅크들 중에서 버퍼 히트 값(buffer hit value)이 임계 버퍼 히트 값 미만인 라우팅 테이블의 복사본을 저장하는 제1 메모리 뱅크를 상기 대상 메모리 뱅크로 결정하는 메모리 시스템.In claim 5,
The memory controller
A memory system that determines, as the target memory bank, a first memory bank storing a copy of a routing table whose buffer hit value is less than a threshold buffer hit value among the plurality of memory banks.
상기 메모리 컨트롤러는
상기 제1 메모리 뱅크가 존재하지 않는 경우, 유휴 상태(Idle state)인 라우팅 테이블의 복사본을 저장하는 제2 메모리 뱅크를 상기 대상 메모리 뱅크로 결정하는 메모리 시스템.In claim 6,
The memory controller
When the first memory bank does not exist, the memory system determines the second memory bank storing a copy of the routing table in an idle state as the target memory bank.
상기 메모리 컨트롤러는
상기 제2 메모리 뱅크가 존재하지 않는 경우, 이전에 바인딩 된 라우팅 테이블의 복사본을 저장하는 제3 메모리 뱅크를 상기 대상 메모리 뱅크로 결정하는 메모리 시스템.In claim 7,
The memory controller
If the second memory bank does not exist, the memory system determines the third memory bank storing a copy of the previously bound routing table as the target memory bank.
상기 메모리 컨트롤러는
상기 제3 메모리 뱅크가 존재하지 않는 경우, 가장 적게 바인딩 된 라우팅 테이블의 복사본을 저장하는 제4 메모리 뱅크를 상기 대상 메모리 뱅크로 결정하는 메모리 시스템.In claim 8,
The memory controller
If the third memory bank does not exist, the memory system determines the fourth memory bank storing the copy of the least-bound routing table as the target memory bank.
입력 패킷의 IP 주소를 수신하는 단계,
상기 라우팅 테이블의 복사본을 각각 저장하는 복수의 메모리 뱅크들로의 접근 빈도를 고려하여, 상기 IP 주소에 대응하는 다음 홉 정보를 결정하기 위해 접근할 대상 메모리 뱅크를 결정하는 단계,
상기 IP 주소를 적어도 하나 이상의 단위 주소들로 분할하고, 상기 대상 메모리 뱅크에 저장된 라우팅 테이블의 외부 표시기를 통해 상기 단위 주소들과 관련된 대상 노드들을 순차적으로 탐색하여 상기 대상 노드들 중에서 자식 노드를 갖지 않는 말단 노드를 결정하는 단계, 그리고
상기 라우팅 테이블의 내부 표시기를 통해 상기 말단 노드에 대응하는 다음 홉 정보를 결정하는 단계를 포함하고,
상기 라우팅 테이블은 상기 IP 주소에 따른 다음 홉 정보를 표현하기 위해 복수의 노드들 및 상기 복수의 노드들을 연결하는 복수의 브랜치들로 구현되고, 상기 외부 표시기는 상기 라우팅 테이블의 각 노드들이 자식 노드를 갖는지 여부에 대한 정보를 포함하고, 상기 내부 표시기는 상기 각 노드들이 상기 말단 노드인 경우 상기 말단 노드에 대응하는 다음 홉 정보를 포함하고, 상기 복수의 노드들은 상기 외부 표시기 및 상기 내부 표시기를 각각 포함하는 검색 방법.A method for a memory controller to search a routing table stored in memory,
Receiving the IP address of the input packet,
Determining a target memory bank to access to determine next hop information corresponding to the IP address, considering the frequency of access to a plurality of memory banks that respectively store a copy of the routing table,
The IP address is divided into at least one or more unit addresses, and the target nodes associated with the unit addresses are sequentially searched through an external indicator of the routing table stored in the target memory bank to not have a child node among the target nodes. Determining an end node, and
And determining next hop information corresponding to the end node through an internal indicator of the routing table,
The routing table is implemented with a plurality of nodes and a plurality of branches connecting the plurality of nodes to express next hop information according to the IP address, and the external indicator indicates that each node of the routing table is a child node. Information on whether or not to have it, and the internal indicator includes next hop information corresponding to the terminal node when each node is the terminal node, and the plurality of nodes respectively include the external indicator and the internal indicator How to search.
상기 대상 메모리 뱅크를 결정하는 단계는
상기 복수의 메모리 뱅크들 중에서, 버퍼 히트 값(buffer hit value)이 임계 버퍼 히트 값 미만인 라우팅 테이블의 복사본을 저장하는 제1 메모리 뱅크를 상기 대상 메모리 뱅크로 결정하는 검색 방법.In claim 10,
Determining the target memory bank is
Among the plurality of memory banks, a search method for determining a first memory bank for storing a copy of a routing table having a buffer hit value less than a threshold buffer hit value as the target memory bank.
상기 대상 메모리 뱅크를 결정하는 단계는
상기 제1 메모리 뱅크가 존재하지 않는 경우, 유휴 상태(Idle state)인 라우팅 테이블의 복사본을 저장하는 제2 메모리 뱅크를 상기 대상 메모리 뱅크로 결정하는 검색 방법.In claim 11,
Determining the target memory bank is
When the first memory bank does not exist, a search method for determining a second memory bank that stores a copy of an idle state routing table as the target memory bank.
상기 대상 메모리 뱅크를 결정하는 단계는
상기 제2 메모리 뱅크가 존재하지 않는 경우, 이전에 바인딩 된 라우팅 테이블의 복사본을 저장하는 제3 메모리 뱅크를 상기 대상 메모리 뱅크로 결정하는 검색 방법.In claim 12,
Determining the target memory bank is
When the second memory bank does not exist, a search method for determining a third memory bank storing a copy of a previously bound routing table as the target memory bank.
상기 대상 메모리 뱅크를 결정하는 단계는
상기 제3 메모리 뱅크가 존재하지 않는 경우, 가장 적게 바인딩 된 라우팅 테이블의 복사본을 저장하는 제4 메모리 뱅크를 상기 대상 메모리 뱅크로 결정하는 검색 방법.In claim 13,
Determining the target memory bank is
When the third memory bank does not exist, a search method for determining a fourth memory bank that stores a copy of the least bound routing table as the target memory bank.
상기 메모리는
상변화 메모리(Phase Change Memory, PCM)로 구현되는 검색 방법.In claim 10,
The memory
A search method implemented in phase change memory (PCM).
상기 메모리는
비휘발성 메모리(Non-Volatile Memory)로 구현되는 검색 방법.In claim 10,
The memory
A search method implemented as a non-volatile memory.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020190024774A KR102101419B1 (en) | 2019-03-04 | 2019-03-04 | Method for routing table lookup and memory system implementing the same |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020190024774A KR102101419B1 (en) | 2019-03-04 | 2019-03-04 | Method for routing table lookup and memory system implementing the same |
Publications (1)
Publication Number | Publication Date |
---|---|
KR102101419B1 true KR102101419B1 (en) | 2020-04-16 |
Family
ID=70454579
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020190024774A KR102101419B1 (en) | 2019-03-04 | 2019-03-04 | Method for routing table lookup and memory system implementing the same |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102101419B1 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114866471A (en) * | 2022-03-25 | 2022-08-05 | 阿里巴巴(中国)有限公司 | Route searching method, device and equipment |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002208947A (en) * | 2001-01-12 | 2002-07-26 | Nec Corp | Route retrieval system and its method and route recording medium with route retrieval program recorded |
KR20100018409A (en) * | 2008-08-06 | 2010-02-17 | 이화여자대학교 산학협력단 | Method for generating packet classification table by using range cutting and packet classification method and packet classifier |
KR20110068037A (en) * | 2009-12-15 | 2011-06-22 | 동국대학교 산학협력단 | Method and apparatus for allocating address in tree structured network |
KR20140053265A (en) * | 2011-07-29 | 2014-05-07 | 텔레호낙티에볼라게트 엘엠 에릭슨(피유비엘) | Method and apparatus for resilient routing of control traffic in a split-architecture system |
-
2019
- 2019-03-04 KR KR1020190024774A patent/KR102101419B1/en active IP Right Grant
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002208947A (en) * | 2001-01-12 | 2002-07-26 | Nec Corp | Route retrieval system and its method and route recording medium with route retrieval program recorded |
KR20100018409A (en) * | 2008-08-06 | 2010-02-17 | 이화여자대학교 산학협력단 | Method for generating packet classification table by using range cutting and packet classification method and packet classifier |
KR20110068037A (en) * | 2009-12-15 | 2011-06-22 | 동국대학교 산학협력단 | Method and apparatus for allocating address in tree structured network |
KR20140053265A (en) * | 2011-07-29 | 2014-05-07 | 텔레호낙티에볼라게트 엘엠 에릭슨(피유비엘) | Method and apparatus for resilient routing of control traffic in a split-architecture system |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114866471A (en) * | 2022-03-25 | 2022-08-05 | 阿里巴巴(中国)有限公司 | Route searching method, device and equipment |
CN114866471B (en) * | 2022-03-25 | 2024-05-28 | 阿里巴巴(中国)有限公司 | Route searching method, device and equipment |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6277572B2 (en) | Data caching method, cache and computer system | |
JP5440067B2 (en) | Cache memory control device and cache memory control method | |
US6430655B1 (en) | Scratchpad RAM memory accessible in parallel to a primary cache | |
US7461207B2 (en) | Methods and apparatus for controlling hierarchical cache memory | |
US6877067B2 (en) | Shared cache memory replacement control method and apparatus | |
US10397362B1 (en) | Combined cache-overflow memory structure | |
US5535361A (en) | Cache block replacement scheme based on directory control bit set/reset and hit/miss basis in a multiheading multiprocessor environment | |
US9871727B2 (en) | Routing lookup method and device and method for constructing B-tree structure | |
JP2018133086A (en) | Hybrid memory module and operation method for the same | |
CN101141389B (en) | Reinforcement multidigit Trie tree searching method and apparatus | |
US8185692B2 (en) | Unified cache structure that facilitates accessing translation table entries | |
US20030182291A1 (en) | Method and data structure for a low memory overhead database | |
US6848023B2 (en) | Cache directory configuration method and information processing device | |
CN105740164A (en) | Multi-core processor supporting cache consistency, reading and writing methods and apparatuses as well as device | |
JP2005198285A (en) | Apparatus and method using hashing for efficiently implementing ip lookup solution in hardware | |
JPH07271672A (en) | Multi-way set associative cache system | |
JPH08235052A (en) | System and method for storage of address tag into directory | |
US7260674B2 (en) | Programmable parallel lookup memory | |
US7761665B2 (en) | Handling of cache accesses in a data processing apparatus | |
KR102101419B1 (en) | Method for routing table lookup and memory system implementing the same | |
WO2015032214A1 (en) | High-speed routing lookup method and device simultaneously supporting ipv4 and ipv6 | |
KR20020095875A (en) | Multi-level cache system | |
US20030196024A1 (en) | Apparatus and method for a skip-list based cache | |
US6401171B1 (en) | Method and device for storing an IP header in a cache memory of a network node | |
US20070101044A1 (en) | Virtually indexed cache system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |