KR20230131614A - 네트워크 장비용 비휘발성 복합 메모리 및 비휘발성 복합 메모리 동작 방법 - Google Patents

네트워크 장비용 비휘발성 복합 메모리 및 비휘발성 복합 메모리 동작 방법 Download PDF

Info

Publication number
KR20230131614A
KR20230131614A KR1020220028700A KR20220028700A KR20230131614A KR 20230131614 A KR20230131614 A KR 20230131614A KR 1020220028700 A KR1020220028700 A KR 1020220028700A KR 20220028700 A KR20220028700 A KR 20220028700A KR 20230131614 A KR20230131614 A KR 20230131614A
Authority
KR
South Korea
Prior art keywords
memory
packet
store
volatile
determining
Prior art date
Application number
KR1020220028700A
Other languages
English (en)
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 KR1020220028700A priority Critical patent/KR20230131614A/ko
Publication of KR20230131614A publication Critical patent/KR20230131614A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • 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)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

비휘발성 복합 메모리로서, 패킷을 저장하는 비휘발성의 제1 메모리, 그리고 상기 제1 메모리와 상이한 제2 메모리를 포함하는 패킷 버퍼, 그리고 패킷을 저장할 메모리를 제1 메모리 또는 제2 메모리 중 어느 하나의 메모리로 결정하고, 패킷을 분할한 복수의 셀들을 결정한 메모리에 저장할 셀 주소를 매핑하는 패킷 버퍼 제어부를 포함한다. 여기서 제1 메모리는 MRAM(Magnetoresistive Random Access Memory)이고, 제2 메모리는 PCM(Phase Change Memory)이다.

Description

네트워크 장비용 비휘발성 복합 메모리 및 비휘발성 복합 메모리 동작 방법{Non-volatile composite memory and method for operation of non-volatile composite memory}
본 발명은 라우터 또는 스위치와 같은 네트워크 장비용 비휘발성 복합 메모리와 비휘발성 복합 메모리의 동작 방법에 대한 기술이다.
라우터 또는 스위치와 같은 네트워크 장비는, 네트워크에서 트래픽을 전달하거나 패킷의 경로를 선택하는 기능을 수행한다. 이 기능은 각 네트워크 장비의 패킷 프로세서에서 수행한다.
패킷 프로세서에서 처리할 수 있는 패킷 처리량보다 패킷 입력 요구량이 많아질 경우, 패킷 손실(packet drop) 현상이 발생한다. 따라서, 네트워크 장비에는 패킷 손실을 최소화하기 위해 DRAM(또는 SRAM/DRAM 계층 구조) 기반의 패킷 버퍼(packet buffer)를 둔다.
종래에는 라우터 또는 스위치와 같은 네트워크 장비의 라우팅 룩업 테이블과 패킷 버퍼가 휘발성 메모리로 사용된다. 따라서, PoR(Power-on Reset)의 경우와 같이 네트워크 장비의 전력이 유실될 때, 버퍼링하고 있는 내용이 전부 소실된다. 이로 인해, TCP 동기화, 영구적인 UDP(User Datagram Protocol) 패킷 손실, 네트워크 제어 패킷 손실 등이 발생하여 네트워크의 불안정을 초래한다.
즉, 네트워크 장비에 전원이 재설정될 경우, 복구 시간이 최소화되어야 하고 네트워크 장비의 설정 상태가 최대한 보존되어야 하는 고 가용성 프로비저닝(provisioning)이 지원되어야 한다. 그러나, 휘발성 메모리로 패킷 버퍼 메모리를 구성할 경우, 전원이 재설정될 경우 모든 패킷이 손실되고 특히 TCP 패킷 손실의 경우 TCP 동기화 문제의 원인이 된다.
따라서, 본 발명은 DRAM 기반 패킷 버퍼 메모리의 성능에 상응하는 네트워크 장비용 비휘발성 복합 메모리 및 비휘발성 복합 메모리를 이용하여 패킷을 매핑하거나 셀 주소를 매핑하는 동작 방법을 제공한다.
상기 본 발명의 기술적 과제를 달성하기 위한 본 발명의 하나의 특징인 비휘발성 복합 메모리로서,
패킷을 저장하는 비휘발성의 제1 메모리, 그리고 상기 제1 메모리와 상이한 제2 메모리를 포함하는 패킷 버퍼, 그리고 상기 패킷을 저장할 메모리를 상기 제1 메모리 또는 제2 메모리 중 어느 하나의 메모리로 결정하고, 상기 패킷을 분할한 복수의 셀들을 상기 결정한 메모리에 저장할 셀 주소를 매핑하는 패킷 버퍼 제어부를 포함하며, 상기 제1 메모리는 MRAM(Magnetoresistive Random Access Memory)이고, 상기 제2 메모리는 PCM(Phase Change Memory)이다.
상기 패킷 버퍼 제어부는, 상기 패킷을 저장할 메모리를 상기 제1 메모리 또는 제2 메모리 중 어느 하나의 메모리로 결정하는 패킷 맵퍼, 그리고 상기 패킷 맵퍼에서 결정한 메모리에 상기 복수의 셀들을 저장할 셀 주소를 매핑하는 주소 변환기를 포함할 수 있다.
상기 패킷 맵퍼는, 상기 패킷의 크기 그리고 상기 제1 메모리의 메모리 사용량을 기초로, 상기 제1 메모리 또는 제2 메모리 중 상기 패킷을 저장할 메모리를 결정할 수 있다.
상기 주소 변환기는, 상기 패킷을 분할하여 생성한 상기 복수의 셀들을 상기 패킷 버퍼의 메모리의 행에 우선 매핑할 수 있다.
상기 패킷 버퍼는, 복수의 MRAM들과 복수의 PCM들이 독립 형태의 칩으로 구현될 수 있다.
상기 패킷 버퍼는, 복수의 PCM들이 독립 형태의 칩으로 구현되고, 하나의 MRAM이 상기 패킷 버퍼 제어부와 상기 제1 메모리 또는 제2 메모리 간의 신호들을 버퍼링하는 버퍼 디바이스에 내장되어 있을 수 있다.
상기 본 발명의 기술적 과제를 달성하기 위한 본 발명의 또 다른 특징인 제1 메모리와 제2 메모리로 구성된 비휘발성 복합 메모리의 동작 방법으로서,
패킷을 수신하고, 상기 패킷의 크기를 확인하는 단계, 상기 패킷의 크기와 상기 제1 메모리의 메모리 점유율을 기초로, 상기 패킷을 저장할 메모리를 상기 제1 메모리 또는 제2 메모리 중 어느 하나의 메모리로 결정하는 단계, 그리고 결정한 메모리에 상기 패킷을 저장할 주소를 매핑하는 단계를 포함하고, 상기 제1 메모리는 MRAM(Magnetoresistive Random Access Memory)이고, 상기 제2 메모리는 PCM(Phase Change Memory)이다.
상기 메모리로 결정하는 단계는, 상기 제1 메모리의 점유율을 기초로 상기 제1 메모리가 임의의 패킷에 의해 모두 점유되어 있는지 확인하는 단계, 그리고 상기 제1 메모리가 상기 임의의 패킷에 의해 모두 점유되어 있으면, 상기 제2 메모리를 상기 패킷을 저장할 메모리로 결정하는 단계를 포함할 수 있다.
상기 패킷을 저장할 메모리로 결정하는 단계는, 상기 제1 메모리가 상기 임의의 패킷에 의해 모두 점유되어 있지 않고, 상기 제1 메모리의 점유율이 미리 설정한 제1 임계값 이하이면, 상기 제1 메모리를 상기 패킷을 저장할 메모리로 결정하는 단계를 포함할 수 있다.
상기 패킷을 저장할 메모리로 결정하는 단계는, 상기 제1 메모리의 점유율이 상기 제1 임계값 이상이면, 상기 패킷의 크기가 미리 설정한 제2 임계값보다 큰지 확인하는 단계를 포함할 수 있다.
상기 제2 임계값보다 큰지 확인하는 단계는, 상기 패킷의 크기가 상기 제2 임계값 보다 크면, 상기 제1 메모리를 상기 패킷을 저장할 메모리로 결정하고, 상기 패킷의 크기가 상기 제2 임계값 보다 작으면, 상기 제2 메모리를 상기 패킷을 저장할 메모리로 결정할 수 있다.
상기 주소를 매핑하는 단계는, 상기 패킷을 분할하여 복수의 셀들을 생성하는 단계, 그리고 상기 복수의 셀들을 메모리의 행에 우선 매핑하는 단계를 포함할 수 있다.
본 발명에 따르면, 비휘발성 복합 메모리를 이용하여, 패킷 메모리의 쓰기 대기 시간을 효과적으로 완화할 수 있다.
또한, 네트워크 장비로의 전원 재설정 시, 패킷 손실을 방지할 수 있다.
도 1은 일반적인 네트워크 장비에 탑재되는 메모리의 구조도이다.
도 2는 본 발명의 실시예에 따른 네트워크 장비용 메모리의 구조도이다.
도 3은 본 발명의 또 다른 실시예에 따른 네트워크 장비용 메모리의 구조도이다.
도 4는 본 발명의 실시예에 따른 패킷 매핑 방법에 대한 흐름도이다.
도 5는 본 발명의 실시예에 따른 셀 주소 매핑 방법에 해당 예시도이다.
도 6은 본 발명의 실시예에 따른 컴퓨팅 장치의 구조도이다.
아래에서는 첨부한 도면을 참고로 하여 본 발명의 실시예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
이하, 도면을 참조로 하여, 본 발명의 실시예에 따른 네트워크 장비용 비휘발성 복합 메모리 및 비휘발성 복합 메모리에 패킷 매핑 방법에 대해 설명한다. 본 발명의 실시예에 대해 설명하기 앞서, 일반적인 메모리 구조와 패킷 버퍼에 대해 먼저 도 1을 참조로 설명한다.
도 1은 일반적인 네트워크 장비에 탑재되는 메모리의 구조도이다.
도 1에 도시된 바와 같이, 메모리(1)는 패킷 프로세서(10), 패킷 버퍼 컨트롤러(20), 그리고 패킷 버퍼(30)가 버스를 통해 연결되어 있다. 패킷이 외부로부터 입력되면 패킷 버퍼 컨트롤러(20)는 패킷을 셀과 블록 단위로 나누고, 큐(Queue) 구조로 저장하기 위해 패킷을 저장할 패킷 버퍼를 할당한다. 그리고 패킷 버퍼 컨트롤러(20)는 패킷이 저장될 위치의 헤드/테일 포인터를 기록한 후, 할당한 패킷 버퍼(30)에 패킷을 저장한다. 여기서, 패킷이 나뉘어지는 셀과 블록 단위는 이미 알려진 단위로, 본 발명의 실시예에서는 단위의 정의를 어느 하나로 한정하여 설명하지 않는다.
패킷 프로세서(10)에서 처리할 수 있는 패킷 처리량보다, 메모리(1)로 입력되는 패킷 입력 요구량이 많아질 경우, 패킷을 버리는 패킷 드롭(packet drop) 현상이 발생한다. 따라서, 네트워크 장비에는 이를 최소화하기 위해 DRAM 기반의 패킷 버퍼(30)를 둔다.
일반적인 패킷 버퍼(30)의 메모리는 휘발성 메모리로 구성된다. 따라서, power-on reset의 경우와 같이 네트워크 장비의 전력 유실 시, 패킷 버퍼(30)에 버퍼링되어 있는 패킷이 전부 소실된다. 이는, TCP 동기화, 영구적인 UDP(User Datagram Protocol) 패킷 손실, 네트워크 제어 패킷 손실 등의 원인이 되어, 네트워크의 불안정을 초래한다.
따라서, 본 발명의 실시예에서는 네트워크 장비의 높은 가용성을 보장하기 위해, DRAM 기반 패킷 버퍼 메모리의 성능에 상응하는 즉, 대역폭과 가용성을 모두 보장할 수 있는 비휘발성 메모리를 제안한다.
도 2는 본 발명의 실시예에 따른 네트워크 장비용 메모리의 구조도이고, 도 3은 본 발명의 또 다른 실시예에 따른 네트워크 장비용 메모리의 구조도이다.
도 2에 도시된 바와 같이, 본 발명의 실시예에 따른 메모리(100)는 패킷 버퍼 제어부(110)와 패킷 버퍼(120)를 포함한다. 본 발명의 실시예에서는 설명의 편의를 위하여 메모리(100)가 패킷 버퍼 제어부(110)와 패킷 버퍼(120)만으로 구현되는 것으로 도시하였으나, 메모리(100)의 기능을 수행하기 위한 또 다른 구성 요소들(예를 들어, 패킷 프로세서 등)이 추가로 포함될 수 있다.
패킷 버퍼 제어부(110)는 패킷 맵퍼(111), 헤드/테일 포인터 메모리(112), 프리-비트맵(113), 패킷 스케줄러(114), 그리고 주소 변환기(115)를 포함하는 메모리 제어기(116)를 포함한다.
그리고, 패킷 버퍼(120)는 제1 메모리(121), 제2 메모리(122) 그리고 버퍼 디바이스(123)를 포함한다. 본 발명의 실시예에서는 제1 메모리(121)는 MRAM(Magnetoresistive Random Access Memory, 자기 저항 메모리)이고, 제2 메모리(122)는 PCM(Phase Change Memory, 상 변화 메모리)인 것을 예로 하여 설명한다.
패킷 맵퍼(111)는 패킷 버퍼(120)에 저장할 패킷이 입력되면, 패킷을 복합 메모리 즉, 제1 메모리(121) 또는 제2 메모리(122) 중 어느 메모리에 저장할 것인 것 결정한다.
이때, 패킷 맵퍼(111)는 제1 메모리(121)에 패킷을 저장할 수 있는 가용 용량, 현재 제1 메모리(121)가 얼마나 사용되고 있는지 나타내는 메모리 사용량, 그리고 저장할 패킷의 패킷 사이즈 등의 정보를 기초로, 제1 메모리(121) 또는 제2 메모리(122) 중 패킷을 저장할 메모리를 결정한다. 패킷 맵퍼(111)가 패킷을 저장할 메모리를 결정하는, 즉 패킷 매핑 방법에 대해서는 이후 상세히 설명한다.
헤드/테일 포인터 메모리(112)는 메모리에 저장될 패킷인 노드의 맨 처음 주소 값과 맨 끝 주소 값을 저장한다. 이는 패킷이 패킷 버퍼에 저장될 때 큐(Queue) 데이터 구조로 관리되기 때문이다.
패킷 버퍼에서 큐 데이터 구조는 블록 단위의 데이터를 저장/관리하기 위해 사용된다. 큐를 구성하기 위해선 데이터의 시작점의 주소인 헤드 포인터와, 다음 데이터(block)의 주소인 테일 포인터가 필요하다. 패킷을 큐 데이터 구조로 패킷 버퍼에 저장하는 방법이나, 패킷의 맨 처음 주소 값, 맨 끝 주소 값을 저장하는 방법이나 이를 획득하는 방법은 이미 알려진 기술로, 본 발명의 실시예에서는 어느 하나의 방법으로 한정하지 않는다.
프리-비트맵(113)은 패킷 버퍼(120)에 새로 입력된 패킷을 기록하기 위한 공간 할당에 사용되며, 이용 가능한 패킷 버퍼(120) 내 빈 블록에 대한 정보를 관리한다.
패킷 스케줄러(114)는 혼잡 제어, 흐름 제어 또는 패킷별 전송 경로를 결정한다. 이때, 패킷 스케줄러(114)는 다중 경로의 각 전송 경로에 대한 양방향 지연, 패킷 손실, 송신 트래픽, 혼잡 윈도우를 포함한 네트워크 상태를 측정하고, 네트워크 상태의 측정 값에 따라 순차 순환(Round robin) 스케줄링 알고리즘 및 저지연(Low latency) 우선 스케줄링 알고리즘 포함한 일반적인 패킷 스케줄링 알고리즘, 심층 강화학습 모델에 기반한 패킷 스케줄링 알고리즘(DRL based) 중 어느 하나의 알고리즘을 선택적으로 사용한다.
주소 변환기(115)는 미리 설정된 크기의 셀(cell) 단위로 분할된 패킷을 패킷 버퍼(120)에 저장할 때, 셀이 저장될 주소를 변환한다. 이때, 주소 변환기(115)는 패킷의 크기에 따라 패킷 버퍼(120) 메모리의 행(row), 뱅크(bank), 채널(channel)에 저장되는 방식을 다르게 설정한다.
즉, 논리적 블록으로 분할되어 있는 패킷 버퍼(120)에 큐로 관리되는 셀 또는 블록을 저장할 때, 셀 또는 블록을 메모리의 행(row)에 우선 매핑하여 행 버퍼 지역성(row buffer locality)을 최대화할 수 있도록 주소 매핑을 수행한다. 주소 변환기(115)가 셀 또는 블록이 저장될 주소를 매핑하는 방법에 대해서는 이후 상세히 설명한다.
패킷 버퍼(120)의 제1 메모리(121)와 제2 메모리(122)는 패킷을 셀 또는 블록 단위로 저장한다. 제1 메모리(121)는 8개의 MRAM 칩들이 포함되어 있고, 제2 메모리(122)는 8개의 PCM 칩들이 포함되어 있는 것을 예로 하여 설명하나, 메모리 칩의 종류나 숫자가 반드시 이와 같이 한정되는 것은 아니다.
버퍼 디바이스(123)는 패킷 버퍼 제어부(110)와 제1 메모리(121) 또는 제2 메모리(122) 간의 판독 또는 패킷을 쓰기 위한 신호들을 버퍼링한다. 본 발명의 실시예에서는 하나의 버퍼 디바이스(123)가 제1 메모리(121)와 제2 메모리(122)에 연결되어 있는 것을 예로 하여 설명하나, 반드시 이와 같이 한정되는 것은 아니다. 버퍼 디바이스(123)의 기능은 이미 알려진 것으로, 본 발명의 실시예에서는 상세한 설명을 생략한다.
상술한 도 2에서는 복수의 MRAM들과 복수의 PCM들이 독립 형태의 칩으로 구현되는 것을 예로 하여 설명하였으나, 도 3과 같이 버퍼 디바이스(123)에 MRAM이 내장된 eMRAM(124)으로 구현될 수도 있다.
다음은 네트워크 장비용 메모리(100)의 패킷 맵퍼(111)가 패킷 버퍼에 패킷을 매핑하는 방법에 대해 도 4를 참조로 설명한다.
도 4는 본 발명의 실시예에 따른 패킷 매핑 방법에 대한 흐름도이다.
도 4에 도시된 바와 같이, 패킷 맵퍼(111)는 패킷 버퍼(120)에 저장하기 위해 수신한 패킷의 패킷 크기 정보를 패킷의 헤더로부터 확인한다(S100). 패킷 맵퍼(111)가 패킷 헤더에서 패킷의 크기 정보를 확인하는 방법은 이미 알려진 기술로, 본 발명의 실시예에서는 어느 하나의 방법으로 한정하지 않는다.
패킷 맵퍼(111)는 패킷을 저장할 메모리를 선택하기 위해, 먼저 제1 메모리(121)인 MRAM이 가용 가능한지 확인한다(S110). 즉, 네트워크 요구량이 과다한 상태이고 MRAM에 저장 가능한 공간이 있는지 확인하여, MRAM에 가용 가능한 공간이 없으면 PCM에 저장하는 것으로 결정한다(S120).
그러나 MRAM이 가용 가능하다면, 패킷 맵퍼(111)는 현재 패킷이 저장되어 있는 MRAM의 사용량이 미리 설정한 제1 임계값 이상인지 확인한다(S130). 만약 MRAM의 사용량이 제1 임계값 이하인 경우, 패킷 맵퍼(111)는 패킷을 MRAM에 저장하는 것으로 결정한다(S140).
그러나, MRAM의 사용량이 제1 임계값 이상인 경우, 패킷 맵퍼(111)는 수신한 패킷의 크기가 미리 설정한 제2 임계값보다 작은지 확인한다(S150). 패킷의 크기가 제2 임계값보다 작으면, 패킷 맵퍼(111)는 패킷을 MRAM에 저장하는 것으로 결정한다. 그러나, 패킷의 크기가 제2 임계값보다 작으면, 패킷 맵퍼(111)는 패킷을 PCM에 저장하는 것으로 결정한다.
상술한 바와 같이 패킷 맵퍼(111)에서 패킷을 저장할 메모리를 결정한 후, 주소 변환기(115)는 패킷을 셀 단위로 분할하여, 패킷 버퍼(120)에 저장할 주소(이하, 설명의 편의를 위하여 '셀 주소'라 지칭함)를 매핑한다. 주소 변환기(115)가 셀 주소를 매핑하는 방법에 대해 도 5를 참조로 설명한다.
도 5는 본 발명의 실시예에 따른 셀 주소 매핑 방법에 해당 예시도이다.
도 5의 (a)는 일반적인 주소 매핑 방식을 나타낸 예시도이고, 도 5의 (b)는 본 발명의 실시예에 따른 주소 매핑 방식을 나타낸 예시도이다.
도 5에 도시된 바와 같이, 주소 변환기(115)는 주소 변환 알고리즘을 이용하여 패킷에 논리 주소를 제공한 후, 논리-물리 주소 매핑 방식을 통해 셀에 물리적 주소를 매핑한다. 이때, 일반적인 DRAM 기반 주소 매핑은 도 5의 (a)에 도시된 바와 같이, DRAM 기반 메모리의 뱅크 및 채널 병렬성을 극대화하기 위해, 셀이 채널과 뱅크에 분산되어 저장된다.
그러나 PCM의 쓰기 성능이 DRAM보다 낮기 때문에, 셀이 여러 뱅크와 채널에 분산될 경우, 행 버퍼 누락이 자주 발생한다. 그리고 쓰기 패널티가 커지기 때문에, 메모리 성능이 DRAM에 비해 크게 저하된다.
그러므로, 본 발명의 실시예에서는 도 5의 (b)에 나타낸 바와 같이 복수의 셀들로 구성된 블록이 각 채널에 분산되도록 구성되나, 블록은 동일 채널에서 같은 뱅크의 동일한 행을 공유하도록 주소가 매핑되어 있다. 이를 통해, 행 버퍼 적중(row buffer hit)을 최대화한다.
도 6은 본 발명의 실시예에 따른 컴퓨팅 장치의 구조도이다.
도 6에 도시된 바와 같이, 네트워크 장비용 메모리(100)는 적어도 하나의 프로세서에 의해 동작하는 컴퓨팅 장치(200)에서, 본 발명의 동작을 실행하도록 기술된 명령들(instructions)이 포함된 프로그램을 실행한다.
컴퓨팅 장치(200)의 하드웨어는 적어도 하나의 프로세서(210), 메모리(220), 스토리지(230), 통신 인터페이스(240)를 포함할 수 있고, 버스를 통해 연결될 수 있다. 이외에도 입력 장치 및 출력 장치 등의 하드웨어가 포함될 수 있다. 컴퓨팅 장치(200)는 프로그램을 구동할 수 있는 운영 체제를 비롯한 각종 소프트웨어가 탑재될 수 있다.
프로세서(210)는 컴퓨팅 장치(200)의 동작을 제어하는 장치로서, 프로그램에 포함된 명령들을 처리하는 다양한 형태의 프로세서(210)일 수 있고, 예를 들면, CPU(Central Processing Unit), MPU(Micro Processor Unit), MCU(Micro Controller Unit), GPU(Graphic Processing Unit) 등 일 수 있다. 메모리(220)는 본 발명의 동작을 실행하도록 기술된 명령들이 프로세서(210)에 의해 처리되도록 해당 프로그램을 로드한다. 메모리(220)는 예를 들면, ROM(read only memory), RAM(random access memory) 등 일 수 있다. 스토리지(230)는 본 발명의 동작을 실행하는데 요구되는 각종 데이터, 프로그램 등을 저장한다. 통신 인터페이스(240)는 유/무선 통신 모듈일 수 있다.
이상에서 본 발명의 실시예에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속하는 것이다.

Claims (12)

  1. 비휘발성 복합 메모리로서,
    패킷을 저장하는 비휘발성의 제1 메모리, 그리고 상기 제1 메모리와 상이한 제2 메모리를 포함하는 패킷 버퍼, 그리고
    상기 패킷을 저장할 메모리를 상기 제1 메모리 또는 제2 메모리 중 어느 하나의 메모리로 결정하고, 상기 패킷을 분할한 복수의 셀들을 상기 결정한 메모리에 저장할 셀 주소를 매핑하는 패킷 버퍼 제어부
    를 포함하며,
    상기 제1 메모리는 MRAM(Magnetoresistive Random Access Memory)이고, 상기 제2 메모리는 PCM(Phase Change Memory)인, 비휘발성 복합 메모리.
  2. 제1항에 있어서,
    상기 패킷 버퍼 제어부는,
    상기 패킷을 저장할 메모리를 상기 제1 메모리 또는 제2 메모리 중 어느 하나의 메모리로 결정하는 패킷 맵퍼, 그리고
    상기 패킷 맵퍼에서 결정한 메모리에 상기 복수의 셀들을 저장할 셀 주소를 매핑하는 주소 변환기
    를 포함하는, 비휘발성 복합 메모리.
  3. 제2항에 있어서,
    상기 패킷 맵퍼는,
    상기 패킷의 크기 그리고 상기 제1 메모리의 메모리 사용량을 기초로, 상기 제1 메모리 또는 제2 메모리 중 상기 패킷을 저장할 메모리를 결정하는, 비휘발성 복합 메모리.
  4. 제3항에 있어서,
    상기 주소 변환기는,
    상기 패킷을 분할하여 생성한 상기 복수의 셀들을 상기 패킷 버퍼의 메모리의 행에 우선 매핑하는, 비휘발성 복합 메모리.
  5. 제4항에 있어서,
    상기 패킷 버퍼는,
    복수의 MRAM들과 복수의 PCM들이 독립 형태의 칩으로 구현되는, 비휘발성 복합 메모리.
  6. 제4항에 있어서,
    상기 패킷 버퍼는,
    복수의 PCM들이 독립 형태의 칩으로 구현되고, 하나의 MRAM이 상기 패킷 버퍼 제어부와 상기 제1 메모리 또는 제2 메모리 간의 신호들을 버퍼링하는 버퍼 디바이스에 내장되어 있는, 비휘발성 복합 메모리.
  7. 제1 메모리와 제2 메모리로 구성된 비휘발성 복합 메모리의 동작 방법으로서,
    패킷을 수신하고, 상기 패킷의 크기를 확인하는 단계,
    상기 패킷의 크기와 상기 제1 메모리의 메모리 점유율을 기초로, 상기 패킷을 저장할 메모리를 상기 제1 메모리 또는 제2 메모리 중 어느 하나의 메모리로 결정하는 단계, 그리고
    결정한 메모리에 상기 패킷을 저장할 주소를 매핑하는 단계
    를 포함하고,
    상기 제1 메모리는 MRAM(Magnetoresistive Random Access Memory)이고, 상기 제2 메모리는 PCM(Phase Change Memory)인, 동작 방법.
  8. 제7항에 있어서,
    상기 메모리로 결정하는 단계는,
    상기 제1 메모리의 점유율을 기초로 상기 제1 메모리가 임의의 패킷에 의해 모두 점유되어 있는지 확인하는 단계, 그리고
    상기 제1 메모리가 상기 임의의 패킷에 의해 모두 점유되어 있으면, 상기 제2 메모리를 상기 패킷을 저장할 메모리로 결정하는 단계
    를 포함하는, 동작 방법.
  9. 제8항에 있어서,
    상기 패킷을 저장할 메모리로 결정하는 단계는,
    상기 제1 메모리가 상기 임의의 패킷에 의해 모두 점유되어 있지 않고, 상기 제1 메모리의 점유율이 미리 설정한 제1 임계값 이하이면, 상기 제1 메모리를 상기 패킷을 저장할 메모리로 결정하는 단계
    를 포함하는, 동작 방법.
  10. 제9항에 있어서,
    상기 패킷을 저장할 메모리로 결정하는 단계는,
    상기 제1 메모리의 점유율이 상기 제1 임계값 이상이면, 상기 패킷의 크기가 미리 설정한 제2 임계값보다 큰지 확인하는 단계
    를 포함하는, 동작 방법.
  11. 제10항에 있어서,
    상기 제2 임계값보다 큰지 확인하는 단계는,
    상기 패킷의 크기가 상기 제2 임계값 보다 크면, 상기 제1 메모리를 상기 패킷을 저장할 메모리로 결정하고,
    상기 패킷의 크기가 상기 제2 임계값 보다 작으면, 상기 제2 메모리를 상기 패킷을 저장할 메모리로 결정하는, 동작 방법.
  12. 제7항에 있어서,
    상기 주소를 매핑하는 단계는,
    상기 패킷을 분할하여 복수의 셀들을 생성하는 단계, 그리고
    상기 복수의 셀들을 메모리의 행에 우선 매핑하는 단계
    를 포함하는, 동작 방법.
KR1020220028700A 2022-03-07 2022-03-07 네트워크 장비용 비휘발성 복합 메모리 및 비휘발성 복합 메모리 동작 방법 KR20230131614A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020220028700A KR20230131614A (ko) 2022-03-07 2022-03-07 네트워크 장비용 비휘발성 복합 메모리 및 비휘발성 복합 메모리 동작 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020220028700A KR20230131614A (ko) 2022-03-07 2022-03-07 네트워크 장비용 비휘발성 복합 메모리 및 비휘발성 복합 메모리 동작 방법

Publications (1)

Publication Number Publication Date
KR20230131614A true KR20230131614A (ko) 2023-09-14

Family

ID=88013988

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220028700A KR20230131614A (ko) 2022-03-07 2022-03-07 네트워크 장비용 비휘발성 복합 메모리 및 비휘발성 복합 메모리 동작 방법

Country Status (1)

Country Link
KR (1) KR20230131614A (ko)

Similar Documents

Publication Publication Date Title
US8225026B2 (en) Data packet access control apparatus and method thereof
US20200192715A1 (en) Workload scheduler for memory allocation
US7904677B2 (en) Memory control device
EP1237337A2 (en) Efficient optimization algorithm in memory utilization for network applications
US11700209B2 (en) Multi-path packet descriptor delivery scheme
US20030016689A1 (en) Switch fabric with dual port memory emulation scheme
US9753660B2 (en) System and method for implementing hierarchical distributed-linked lists for network devices
US20170147251A1 (en) Queue Management Method and Apparatus
US20170017424A1 (en) System And Method For Enabling High Read Rates To Data Element Lists
US20220078119A1 (en) Network interface device with flow control capability
US7000073B2 (en) Buffer controller and management method thereof
US9785367B2 (en) System and method for enabling high read rates to data element lists
EP3461085B1 (en) Method and device for queue management
WO2022250751A1 (en) Distributed cache management
US20040131055A1 (en) Memory management free pointer pool
US11552907B2 (en) Efficient packet queueing for computer networks
US7733888B2 (en) Pointer allocation by prime numbers
Wang et al. Block-based packet buffer with deterministic packet departures
KR20230131614A (ko) 네트워크 장비용 비휘발성 복합 메모리 및 비휘발성 복합 메모리 동작 방법
US9767014B2 (en) System and method for implementing distributed-linked lists for network devices
US7944930B2 (en) Memory buffering with fast packet information access for a network device
Kabra et al. Fast buffer memory with deterministic packet departures
WO2003088047A1 (en) System and method for memory management within a network processor architecture
US10067690B1 (en) System and methods for flexible data access containers
US20230401079A1 (en) Resource allocation in virtualized environments