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 PDF

Info

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
Application number
KR1020190024774A
Other languages
Korean (ko)
Inventor
이혁준
김지남
Original Assignee
서강대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 서강대학교 산학협력단 filed Critical 서강대학교 산학협력단
Priority to KR1020190024774A priority Critical patent/KR102101419B1/en
Application granted granted Critical
Publication of KR102101419B1 publication Critical patent/KR102101419B1/en

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/54Organization of routing tables
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/60Router architectures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/901Buffering arrangements using storage descriptor, e.g. read or write pointers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9063Intermediate storage in different physical parts of a node or terminal
    • H04L49/9078Intermediate 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

A memory system includes: a memory storing a routing table comprising a plurality of nodes for expressing next hop information in accordance with an IP address and a plurality of branches connecting the nodes; and a memory controller dividing an IP address of an input packet into at least one unit address, determining an end node, which does not have a child node, among target nodes related with the unit address by sequentially exploring the target nodes through an external display of the routing table, and determining the next hop information corresponding to the end node through an internal display of the routing table. The external display includes information about whether each of the nodes of the routing table includes a child node. The internal display includes next hop information corresponding to the end node if each of the nodes is the end node. Each of the nodes includes the external display and the internal display.

Description

라우팅 테이블 검색 방법 및 이를 구현하는 메모리 시스템{METHOD FOR ROUTING TABLE LOOKUP AND MEMORY SYSTEM IMPLEMENTING THE SAME}METHOD FOR ROUTING TABLE LOOKUP AND MEMORY SYSTEM IMPLEMENTING THE SAME}

본 발명은 인터넷 프로토콜 라우팅 테이블 검색 방법 및 이를 구현하는 고대역폭 메모리 시스템에 관한 것이다.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 memory 100 and a memory controller 200.

구체적으로, 메모리(100)는 상변화 메모리(Phase Change Memory, PCM) 또는 비휘발성 메모리(Non-Volatile Memory) 중 어느 하나로 구현된다.Specifically, the memory 100 is implemented as either a phase change memory (PCM) or a non-volatile memory (Non-Volatile Memory).

여기서, 비휘발성 메모리는 비대칭적 읽기(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 memory 100 may be implemented as a dual in-line memory module (DIMM), in which case the memory 100 includes a plurality of phases. It can be any one of change memories. The memory 100 may include memory bank groups composed of memory banks, local buffers, shared buffers, and a bit checker, which will be described later in detail.

한편, 메모리(100)는 IP 주소에 따른 다음 홉(next hop) 정보를 표현하기 위해 복수의 노드들 및 복수의 노드들을 연결하는 복수의 브랜치들로 구현된 라우팅 테이블을 저장한다.On the other hand, the memory 100 stores a routing table implemented with a plurality of nodes and a plurality of branches connecting a plurality of nodes to express next hop information according to an IP address.

메모리(100)에 저장된 라우팅 테이블의 각 노드들은 라우팅 테이블의 각 노드들이 자식 노드를 갖는지 여부에 대한 정보를 포함하는 외부 표시기 및 각 노드들이 말단 노드인 경우 말단 노드에 대응하는 다음 홉 정보를 포함하는 내부 표시기를 각각 포함한다.Each node of the routing table stored in the memory 100 includes an external indicator including information on whether each node of the routing table has a child node, and next hop information corresponding to the terminal node when each node is an end node. Each includes an internal indicator.

이하, 메모리(100)에 저장된 라우팅 테이블에 대해 도 2 및 도 3을 통해 설명한다.Hereinafter, the routing table stored in the memory 100 will be described with reference to FIGS. 2 and 3.

도 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 end node 20 along the nodes 10, 12, 14, 15, 16, 18 and 19 determined through the corresponding process, and the end node Since the next hop information "G" is mapped to (20), the next hop information for the IP address "101111111" is determined as "G".

도 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 internal indicator 30 and an external indicator 40.

내부 표시기(30)는 IP 주소에 따른 다음 홉 정보를 관리하며, 외부 표시기(40)는 자식 노드들의 존재 여부를 관리한다.The internal indicator 30 manages next hop information according to the IP address, and the external indicator 40 manages the existence of child nodes.

예를 들면, 도 3에서, 내부 표시기(30)를 구성하는 각 노드들이 10진법으로 표기되었을 때 "0" 내지 "7"까지의 값을 갖는 경우, 외부 표시기(40)는 8개의 필드를 포함하고, 특정 필드에 대응하는 노드가 자식 노드를 갖는 경우 필드 값을 "1"로, 자식 노드를 갖지 않는 경우 필드 값을 "0"으로 표시할 수 있다.For example, in FIG. 3, when each node constituting the internal indicator 30 has a value of “0” to “7” when expressed in decimal notation, the external indicator 40 includes 8 fields And, if a node corresponding to a specific field has a child node, the field value may be displayed as "1", and if the node corresponding to a specific field does not have a child node, the field value may be displayed as "0".

만일 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 external indicator 40, the field value of "5" is "1", so a child node exists. Therefore, since a child node exists, it moves to the next unit address "111" through a child pointer.

"111"을 10진법으로 표기하면 "7"이고, 외부 표시기(40)를 참조하면 "7"의 필드 값 또한 "1"이므로 자식 노드가 존재한다. 따라서, 이 경우에도 차일드 포인터를 통해 다음 단위 주소인 "111"로 이동한다.If "111" is written in decimal notation, "7", and referring to the external indicator 40, the field value of "7" is also "1", so a child node exists. Therefore, even in this case, it moves to the next unit address "111" through the child pointer.

"111"에 대한 10진법 표기 "7"에 대해 외부 표시기(40)를 참조하면 "7"의 필드 값이 "0"이다. 이 경우, 자식 노드가 존재하지 않으므로, 내부 표시기(30) 및 다음 홉 포인터를 참조하여, 이에 대응하는 다음 홉 정보 "G"를 결정한다.Referring to the external indicator 40 for the decimal notation "7" for "111", the field value of "7" is "0". In this case, since the child node does not exist, the next hop information " G " corresponding to this is determined by referring to the internal indicator 30 and the next hop pointer.

즉, 내부 표시기(30) 및 외부 표시기(40)를 사용하여 IP 주소에 대응하는 다음 홉 정보를 결정하는 경우, 말단 노드가 결정될 때까지 내부 표시기(30)에 접근하지 않고 외부 표시기(40)만을 이용하여 결정할 수 있게 된다.That is, when determining the next hop information corresponding to the IP address using the internal indicator 30 and the external indicator 40, the external indicator 40 is not accessed without accessing the internal indicator 30 until the end node is determined. You can use it to make decisions.

메모리 컨트롤러(200)는 IP 주소가 입력된 경우, 메모리(100)에 저장된 라우팅 테이블을 이용하여 입력된 IP 주소에 대응하는 다음 홉 정보를 결정한다.When the IP address is input, the memory controller 200 determines the next hop information corresponding to the input IP address using the routing table stored in the memory 100.

예를 들면, 메모리(100)가 상변화 메모리인 경우, 메모리 컨트롤러(200)는 바인더 유닛(210), 쿼리 정보(220), DDR3 인터페이스 유닛(230), 주소 결정 유닛(ADU, Address Determining Unit)(240) 및 다음 홉 정보 결정 유닛(250)을 통해 입력된 IP 주소에 대응하는 다음 홉 정보를 결정할 수 있다.For example, when the memory 100 is a phase change memory, the memory controller 200 includes a binder unit 210, query information 220, a DDR3 interface unit 230, and an address determining unit (ADU). The next hop information corresponding to the IP address input through the 240 and the next hop information determination unit 250 may be determined.

상변화 메모리에 대한 메모리 컨트롤러가 위와 같은 유닛들을 통해 다음 홉 정보를 결정하는 일반적인 방법은 이미 공지된 기술이므로 본 명세서에서는 자세한 설명을 생략하며, 이하에서는 공지 기술과 차별화된 메모리 컨트롤러(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 memory controller 200 differentiated from the known technique is described below. Explain.

메모리 컨트롤러(200)는 입력 패킷의 IP 주소를 적어도 하나 이상의 단위 주소들로 분할한다.The memory controller 200 divides the IP address of the input packet into at least one unit address.

예를 들면, 메모리 컨트롤러(200)는 추출한 IP 주소가 "101111111"인 경우, IP 주소를 3비트씩 분할하여 단위 주소 "101", "111" 및 "111"를 생성할 수 있다.For example, when the extracted IP address is "101111111", the memory controller 200 may generate unit addresses "101", "111" and "111" by dividing the IP address by 3 bits.

메모리 컨트롤러(200)는 메모리(100)에 저장된 라우팅 테이블의 외부 표시기 및 내부 표시기를 이용하여 IP 주소에 대응하는 다음 홉 정보를 결정한다.The memory controller 200 determines the next hop information corresponding to the IP address using the external indicator and the internal indicator of the routing table stored in the memory 100.

구체적으로, 메모리 컨트롤러(200)는 외부 표시기를 통해 단위 주소들과 관련된 대상 노드들을 순차적으로 탐색하여 대상 노드들 중에서 자식 노드를 갖지 않는 말단 노드를 결정하고, 내부 표시기를 통해 말단 노드에 대응하는 다음 홉 정보를 결정한다.Specifically, the memory controller 200 sequentially searches target nodes related to unit addresses through an external indicator to determine an end node that does not have a child node among target nodes, and then corresponds to the end node through an internal indicator. Determine hop information.

예를 들면, 도 3에 도시된 바와 같이 외부 표시기(40)가 구현된 경우, 메모리 컨트롤러(200)는 첫 번째 단위 주소 "101"의 10진법 표기가 "5"임을 결정하고, 외부 표시기(40)에서 단위 주소 "101"에 대응하는 "5"의 필드 값이 "1"임을 확인하고(자식 노드가 존재), 두 번째 단위 주소 "111"에 대해 동일한 과정을 수행한다.For example, when the external indicator 40 is implemented as illustrated in FIG. 3, the memory controller 200 determines that the decimal notation of the first unit address “101” is “5”, and the external indicator 40 ), The field value of "5" corresponding to the unit address "101" is "1" (the child node exists), and the same process is performed for the second unit address "111".

두 번째 단위 주소 "111"의 경우에도 외부 표시기(40)에서 "7"의 필드 값이 "1"이므로(자식 노드가 존재), 세 번째 단위 주소 "111"에 대해 동일한 과정을 수행한다.Even in the case of the second unit address "111", since the field value of "7" in the external indicator 40 is "1" (there is a child node), the same process is performed for the third unit address "111".

세 번째 단위 주소 "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 external indicator 40 is "0".

따라서, 메모리 컨트롤러(200)는 세 번째 단위 주소 "111"에 대응하는 노드를 말단 노드로 결정하고, 내부 표시기(30)를 참조하여 말단 노드에 대응하는 다음 홉 정보 "G"를 결정할 수 있다.Therefore, the memory controller 200 may determine the node corresponding to the third unit address "111" as the end node, and determine the next hop information "G" corresponding to the end node with reference to the internal indicator 30.

위와 같은 과정에서, 메모리 컨트롤러(200)는 내부 표시기(30)에 접근하지 않고 외부 표시기(40)만을 이용하여 말단 노드를 결정하고, 말단 노드가 결정된 이후 내부 표시기(30)에 접근하여 IP 주소에 대응하는 다음 홉 정보를 결정하는바, 메모리(100)에 접근하는 시간이 줄어들어 결과적으로 라우팅 테이블의 조회 성능을 향상시킬 수 있다.In the above process, the memory controller 200 determines the end node using only the external indicator 40 without accessing the internal indicator 30, and accesses the internal indicator 30 to determine the IP address after the end node is determined. Since the corresponding next hop information is determined, the time to access the memory 100 is reduced, and as a result, query performance of the routing table can be improved.

구체적으로, 만일 외부 표시기(40)만을 이용하여 말단 노드를 결정하지 않는 경우, 말단 노드가 아닌 노드들에 대해서도 다음 홉 정보 유무를 판단하게 되며, 이 경우 모든 메모리 트랜잭션을 요청하게 된다. 예를 들면, 64 바이트의 트랜잭션을 처리하고자 하는 경우, 말단 노드가 아닌 노드들에 대해서도 외부 32 바이트와 내부 32 바이트가 모두 패치(fetch)되어야 한다.Specifically, if the end node is not determined using only the external indicator 40, the presence or absence of next hop information is also determined for nodes other than the end node. In this case, all memory transactions are requested. For example, if you want to process a transaction of 64 bytes, both the outer 32 bytes and the inner 32 bytes must be fetched for nodes that are not end nodes.

그러나, 외부 표시기(40)만을 이용하여 말단 노드를 결정하고, 말단 노드가 결정된 이후 내부 표시기(30)에 접근하여 IP 주소에 대응하는 다음 홉 정보를 결정하는 경우, 외부 표시기(40)를 통해 말단 노드인 경우에 한하여 내부 표시기(30)에 선택적으로 접근하는바, 본래 접근 대기 시간의 절반에 가까운 접근 대기 시간을 가질 수 있다.However, if the end node is determined using only the external indicator 40 and the end node is determined, then the internal indicator 30 is accessed to determine the next hop information corresponding to the IP address. As for the node, the internal indicator 30 is selectively accessed, and thus, the access waiting time may be close to half of the original access waiting time.

이를 구현하기 위해, 내부 표시기(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 internal indicator 30 is mapped to the least significant bit (LSB), the external indicator 40 is mapped to the MSB (Most Significant Bit), and in this case, the external indicator 40 is the internal indicator 30 It is latched earlier. For example, if the node address is provided with an additional 7 bit stride through the address pin, the 7 bit stride is decoded into a 128 bit vector while the MSB is being read from memory 100. Thereafter, a bit AND operation is performed on the 128-bit vector and the 128-bit external indicator 40 extracted from the MSB by the bit checker 140 on all chips. If the target chip indicates that it is not an end node, a second read disable signal is broadcast to all chips and the rest of the reads from the LSB are cancelled. After fetching the node, the address determination unit 240 of the memory controller 100 requests the address of the next node. When the next hop information determination unit 250 determines the next hop information through the above process, the search of the routing table is ended.

한편, 메모리(100)는 복수의 메모리 뱅크 그룹들(110 및 111), 복수의 로컬 버퍼들(120 및 121) 및 복수의 공유 버퍼들(130 및 131)을 포함한다.Meanwhile, the memory 100 includes a plurality of memory bank groups 110 and 111, a plurality of local buffers 120 and 121, and a plurality of shared buffers 130 and 131.

복수의 메모리 뱅크 그룹들(110 및 111)은 각각 라우팅 테이블의 복사본을 내부에 구성된 복수의 메모리 뱅크들에 저장한다.The plurality of memory bank groups 110 and 111 respectively store a copy of the routing table in a plurality of memory banks configured therein.

이 경우, 동일한 메모리 뱅크 그룹에 포함된 메모리 뱅크들은 동일한 라우팅 테이블의 복사본을 저장한다. 예를 들면, 제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 memory banks 110a to 110d of the first memory bank group 110 may store a copy of the same routing table.

복수의 로컬 버퍼들(120 및 121)은 각 메모리 뱅크들에 독립적으로 할당된다.The plurality of local buffers 120 and 121 are allocated independently to each memory bank.

예를 들면, 제1 메모리 뱅크 그룹(110)의 메모리 뱅크들(110a 내지 110d)에는 제1 로컬 버퍼들(120a 내지 120d)이 각각 할당된다.For example, the first local buffers 120a to 120d are allocated to the memory banks 110a to 110d of the first memory bank group 110, respectively.

복수의 공유 버퍼들(130 및 131)은 복수의 메모리 뱅크 그룹(110 및 111)에 각각 독립적으로 할당되고 복수의 로컬 버퍼들(120 및 121)과 각각 연동된다.The plurality of shared buffers 130 and 131 are independently allocated to the plurality of memory bank groups 110 and 111, respectively, and are interlocked with the plurality of local buffers 120 and 121, respectively.

예를 들면, 제1 공유 버퍼(130)는 제1 메모리 뱅크 그룹(110)에 독립적으로 할당되고, 제1 로컬 버퍼들(120a 내지 120d)과 연동된다.For example, the first shared buffer 130 is independently allocated to the first memory bank group 110 and interlocks with the first local buffers 120a to 120d.

복수의 공유 버퍼들(130 및 131)을 메모리(100)에 구축함으로써, 메모리(100)는 복수의 메모리 뱅크 그룹들(110 및 111)이 저장하는 라우팅 테이블의 복사본의 중복된 내용을 복수의 로컬 버퍼들(120 및 121)에 올리는 것을 피할 수 있어 복수의 로컬 버퍼들(120 및 121)을 효율적으로 이용할 수 있다.By constructing a plurality of shared buffers 130 and 131 in the memory 100, the memory 100 stores duplicate contents of a duplicate of a routing table stored in the plurality of memory bank groups 110 and 111 by a plurality of locals Since it is possible to avoid loading the buffers 120 and 121, it is possible to efficiently use a plurality of local buffers 120 and 121.

구체적으로, 복수의 로컬 버퍼들(120 및 121)에 미리 설정된 임계 빈도 이상으로 쓰기 요청이 발생하는 경우, 쓰기 요청은 라우팅 테이블의 복사본들의 일관성을 해칠 우려가 있다. 즉, 쓰기 요청은 라우팅 테이블의 모든 복사본들에 즉시 커밋(commit)되어야 하므로, 라우팅 테이블의 모든 복사본들은 쓰기 요청에 앞서 복수의 로컬 버퍼들(120 및 121)을 제거(evict)하여야 한다.Specifically, when a write request occurs more than a preset threshold frequency in the plurality of local buffers 120 and 121, the write request is likely to damage the consistency of the copies of the routing table. That is, since a write request must be immediately committed to all copies of the routing table, all copies of the routing table must be evicted from the plurality of local buffers 120 and 121 prior to the write request.

이 과정에서 버퍼 누락이 발생할 수 있는데, 복수의 공유 버퍼들(130 및 131)이 구축된 경우, 복수의 공유 버퍼들(130 및 131)에 쓰기 요청이 제공되어 과도하게 복수의 로컬 버퍼들(120 및 121)이 제거되는 것을 방지할 수 있다.In this process, a buffer omission may occur. When a plurality of shared buffers 130 and 131 are constructed, a write request is provided to the plurality of shared buffers 130 and 131, and excessively a plurality of local buffers 120 And 121) can be prevented from being removed.

한편, 복수의 로컬 버퍼들(120 및 121)에 쓰기 요청이 미리 설정된 임계 빈도 미만으로 발생하는 경우, 복수의 공유 버퍼들(130 및 131)은 복수의 로컬 버퍼들(120 및 121)의 희생자 버퍼(victim buffer)로 사용된다. 이 경우, 임계 버퍼 히트 값을 만족한 이후 복수의 로컬 버퍼들(120 및 121)을 제거하는 대신, 임계 버퍼 히트 값 이상의 버퍼 히트를 만족하기 위해 복수의 공유 버퍼들(130 및 131)에 라우팅 테이블의 복사본을 기록한다.On the other hand, when a write request to the plurality of local buffers 120 and 121 occurs below a preset threshold frequency, the plurality of shared buffers 130 and 131 are victim buffers of the plurality of local buffers 120 and 121 (victim buffer). In this case, instead of removing the plurality of local buffers 120 and 121 after satisfying the threshold buffer hit value, a routing table is provided to the plurality of shared buffers 130 and 131 to satisfy a buffer hit equal to or greater than the threshold buffer hit value. Make a copy of it.

한편, 복수의 로컬 버퍼들(120 및 121) 및 복수의 공유 버퍼들(130 및 131)은 모두 LRU 알고리즘(Least Recently Used Algorithm)에 의해 관리될 수 있다.Meanwhile, the plurality of local buffers 120 and 121 and the plurality of shared buffers 130 and 131 may all be managed by a Least Recently Used Algorithm (LRU algorithm).

메모리 컨트롤러(200)는 각 메모리 뱅크들로의 접근 빈도를 고려하여, 복수의 메모리 뱅크들 중에서 다음 홉 정보를 결정하기 위해 접근할 메모리 뱅크를 결정하며, 이에 대한 내용은 도 4를 통해 설명한다.The memory controller 200 determines a memory bank to be accessed in order to determine next hop information among a plurality of memory banks in consideration of the frequency of access to each memory bank, and the contents thereof will be described with reference to FIG. 4.

도 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 memory controller 200 determines a buffer hit value of a copy of a routing table stored in each of a plurality of memory banks (S100), and the buffer hit value is less than a threshold buffer hit value It is checked whether a copy of the table exists (S110).

만일 버퍼 히트 값이 임계 버퍼 히트 값 미만인 라우팅 테이블의 복사본이 존재하는 경우, 메모리 컨트롤러(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 memory controller 200 accesses a first memory bank that stores a copy of the routing table with a buffer hit value less than the critical buffer hit value. Next hop information is determined using a copy of the routing table stored in the memory bank (S111).

만일 버퍼 히트 값이 임계 버퍼 히트 값 미만인 라우팅 테이블의 복사본이 존재하지 않는 경우, 메모리 컨트롤러(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 memory controller 200 checks whether a copy of the routing table in the idle state exists (S120).

만일 유휴 상태(Idle state)인 라우팅 테이블의 복사본이 존재하는 경우, 메모리 컨트롤러(200)는 유휴 상태(Idle state)인 라우팅 테이블의 복사본을 저장하는 제2 메모리 뱅크에 접근하여 제2 메모리 뱅크에 저장된 라우팅 테이블의 복사본을 이용하여 다음 홉 정보를 결정한다(S121).If a copy of the routing table in the idle state exists, the memory controller 200 accesses a second memory bank storing a copy of the routing table in the idle state and stores the copy in the second memory bank. Next hop information is determined using a copy of the routing table (S121).

만일 유휴 상태(Idle state)인 라우팅 테이블의 복사본이 존재하지 않는 경우, 메모리 컨트롤러(200)는 이전에 바인딩 된 라우팅 테이블의 복사본이 존재하는지 확인한다(S130).If there is no copy of the routing table in the idle state, the memory controller 200 checks whether a copy of the previously bound routing table exists (S130).

만일 이전에 바인딩 된 라우팅 테이블의 복사본이 존재하는 경우, 메모리 컨트롤러(200)는 이전에 바인딩 된 라우팅 테이블의 복사본을 저장하는 제3 메모리 뱅크에 접근하여 제3 메모리 뱅크에 저장된 라우팅 테이블의 복사본을 이용하여 다음 홉 정보를 결정한다(S131).If a copy of the previously bound routing table exists, the memory controller 200 accesses a third memory bank storing a copy of the previously bound routing table and uses a copy of the routing table stored in the third memory bank. To determine next hop information (S131).

만일 이전에 바인딩 된 라우팅 테이블의 복사본이 존재하지 않는 경우, 메모리 컨트롤러(200)는 복수의 메모리 뱅크들 각각에 저장된 라우팅 테이블의 복사본의 바인딩 수를 결정하고(S140), 가장 적게 바인딩 된 라우팅 테이블의 복사본을 저장하는 제4 메모리 뱅크에 접근하여 제4 메모리 뱅크에 저장된 라우팅 테이블의 복사본을 이용하여 다음 홉 정보를 결정한다(S141).If a copy of the previously bound routing table does not exist, the memory controller 200 determines the number of bindings of the copy of the routing table stored in each of the plurality of memory banks (S140), and of the least bound routing table. Next hop information is determined by accessing the fourth memory bank storing the copy and using the copy of the routing table stored in the fourth memory bank (S141).

즉, 메모리 컨트롤러(200)는 라우팅 테이블의 복사본의 버퍼 히트 값, 유휴 상태 정보 및 바인딩 정보를 고려하여 특정 메모리 뱅크에 과도한 히트를 바인딩하는 것을 방지한다. 도 4에 도시된 방법을 통해 버퍼 히트 값이 임계 버퍼 히트 값 미만이고 이전에 바인딩 된 라우팅 테이블의 복사본에서 높은 버퍼 적중률을 유도하며, 유휴 상태이고 사용률이 낮은 라우팅 테이블의 복사본의 수를 최소화할 수 있다.That is, the memory controller 200 prevents binding an excessive hit to a specific memory bank in consideration of buffer hit values, idle state information, and binding information of a copy of the routing table. Through the method shown in FIG. 4, the buffer hit value is less than the threshold buffer hit value, and a high buffer hit ratio is induced in the copy of the previously bound routing table, and the number of idle and low-usage routing table copies can be minimized. have.

도 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 memory controller 200 receives the IP address of the input packet (S200).

메모리 컨트롤러(200)는 라우팅 테이블의 복사본을 각각 저장하는 복수의 메모리 뱅크들로의 접근 빈도를 고려하여, IP 주소에 대응하는 다음 홉 정보를 결정하기 위해 접근할 대상 메모리 뱅크를 결정한다(S210).The memory controller 200 determines a target memory bank to be accessed in order to determine next hop information corresponding to an IP address in consideration of the frequency of access to a plurality of memory banks each storing a copy of the routing table (S210). .

구체적으로, 메모리 컨트롤러(200)는 복수의 메모리 뱅크들 중에서, 버퍼 히트 값(buffer hit value)이 임계 버퍼 히트 값 미만인 라우팅 테이블의 복사본을 저장하는 제1 메모리 뱅크를 대상 메모리 뱅크로 결정한다.Specifically, the memory controller 200 determines, as a target memory bank, a first memory bank storing a copy of a routing table in which a buffer hit value is less than a threshold buffer hit value among a plurality of memory banks.

만일 제1 메모리 뱅크가 존재하지 않는 경우, 메모리 컨트롤러(200)는 유휴 상태(Idle state)인 라우팅 테이블의 복사본을 저장하는 제2 메모리 뱅크를 대상 메모리 뱅크로 결정한다.If the first memory bank does not exist, the memory controller 200 determines a second memory bank that stores a copy of the routing table in an idle state as a target memory bank.

만일 제2 메모리 뱅크가 존재하지 않는 경우, 메모리 컨트롤러(200)는 이전에 바인딩 된 라우팅 테이블의 복사본을 저장하는 제3 메모리 뱅크를 대상 메모리 뱅크로 결정한다.If the second memory bank does not exist, the memory controller 200 determines a third memory bank that stores a copy of the previously bound routing table as the target memory bank.

만일 제3 메모리 뱅크가 존재하지 않는 경우, 메모리 컨트롤러(200)는 가장 적게 바인딩 된 라우팅 테이블의 복사본을 저장하는 제4 메모리 뱅크를 대상 메모리 뱅크로 결정한다.If the third memory bank does not exist, the memory controller 200 determines a fourth memory bank that stores a copy of the least bound routing table as a target memory bank.

대상 메모리 뱅크를 결정하면, 메모리 컨트롤러(200)는 IP 주소를 적어도 하나 이상의 단위 주소들로 분할한다(S220).When determining the target memory bank, the memory controller 200 divides the IP address into at least one unit address (S220).

한편, 도 5에서는 대상 메모리 뱅크를 결정한 이후 IP 주소를 단위 주소들로 분할하였으나, 메모리 컨트롤러(200)는 IP 주소를 단위 주소들로 분할한 이후, 상기 방법을 통해 대상 메모리 뱅크를 결정할 수도 있다.Meanwhile, in FIG. 5, after determining the target memory bank, the IP address is divided into unit addresses, but the memory controller 200 may determine the target memory bank through the above method after dividing the IP address into unit addresses.

메모리 컨트롤러(200)는 대상 메모리 뱅크에 저장된 외부 표시기를 통해 단위 주소들과 관련된 대상 노드들을 순차적으로 탐색하여 대상 노드들 중에서 자식 노드를 갖지 않는 말단 노드를 결정한다(S230).The memory controller 200 sequentially searches target nodes related to unit addresses through an external indicator stored in the target memory bank to determine a terminal node having no child nodes among the target nodes (S230).

메모리 컨트롤러(200)는 대상 메모리 뱅크에 저장된 내부 표시기를 통해 말단 노드에 대응하는 다음 홉 정보를 결정한다(S240).The memory controller 200 determines next hop information corresponding to the end node through an internal indicator stored in the target memory bank (S240).

본 발명에 따르면, 패킷 라우팅을 수행하기 위해 임의의 트라이 노드에 접근할 때, 추가 탐색이 필요한 자식 노드를 외부 표시기(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.
제1항에서,
상기 메모리는
상변화 메모리(Phase Change Memory, PCM)로 구현되는 메모리 시스템.
In claim 1,
The memory
Memory system implemented with phase change memory (PCM).
제1항에서,
상기 메모리는
비휘발성 메모리(Non-Volatile Memory)로 구현되는 메모리 시스템.
In claim 1,
The memory
Memory system implemented as a non-volatile memory (Non-Volatile Memory).
제1항에서,
상기 메모리는
상기 라우팅 테이블의 복사본을 내부에 구성된 복수의 메모리 뱅크들에 각각 저장하는 메모리 뱅크 그룹, 각 메모리 뱅크들에 독립적으로 할당되는 복수의 로컬 버퍼들 및 상기 메모리 뱅크 그룹에 독립적으로 할당되고 상기 복수의 로컬 버퍼들과 연동된 공유 버퍼를 포함하는 메모리 시스템.
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.
제4항에서,
상기 메모리 컨트롤러는
각 메모리 뱅크들로의 접근 빈도를 고려하여, 상기 복수의 메모리 뱅크들 중에서 상기 다음 홉 정보를 결정하기 위해 접근할 대상 메모리 뱅크를 결정하는 메모리 시스템.
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.
제5항에서,
상기 메모리 컨트롤러는
상기 복수의 메모리 뱅크들 중에서 버퍼 히트 값(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.
제6항에서,
상기 메모리 컨트롤러는
상기 제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.
제7항에서,
상기 메모리 컨트롤러는
상기 제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.
제8항에서,
상기 메모리 컨트롤러는
상기 제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.
제10항에서,
상기 대상 메모리 뱅크를 결정하는 단계는
상기 복수의 메모리 뱅크들 중에서, 버퍼 히트 값(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.
제11항에서,
상기 대상 메모리 뱅크를 결정하는 단계는
상기 제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.
제12항에서,
상기 대상 메모리 뱅크를 결정하는 단계는
상기 제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.
제13항에서,
상기 대상 메모리 뱅크를 결정하는 단계는
상기 제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.
제10항에서,
상기 메모리는
상변화 메모리(Phase Change Memory, PCM)로 구현되는 검색 방법.
In claim 10,
The memory
A search method implemented in phase change memory (PCM).
제10항에서,
상기 메모리는
비휘발성 메모리(Non-Volatile Memory)로 구현되는 검색 방법.
In claim 10,
The memory
A search method implemented as a non-volatile memory.
KR1020190024774A 2019-03-04 2019-03-04 Method for routing table lookup and memory system implementing the same KR102101419B1 (en)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114866471A (en) * 2022-03-25 2022-08-05 阿里巴巴(中国)有限公司 Route searching method, device and equipment

Citations (4)

* Cited by examiner, † Cited by third party
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

Patent Citations (4)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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